【问题标题】:Pushing objects into dynamic keys将对象推入动态键
【发布时间】:2022-06-11 03:21:45
【问题描述】:

我有一个空的数组、一个和一个对象。由于我有很多对象,我想对它们进行分类。有点像这样:

ARRAY 
  KEY
    OBJECT
    OBJECT
  KEY
    OBJECT

这是数组,默认为空:

public serviceTable: Services[] = [];

这是它的界面:

export interface Services {
  details:
    {
      service: string,
      description: string
    }
}

这是我从result得到的对象:

data: {
  details: [
    {
      service: this.formMain.get('service')?.value,
      description: this.formMain.get('description')?.value
    }
  ]
}

最后但同样重要的是,这就是我尝试定义该数组及其对象的动态键的方式。

dialogRef.afterClosed().subscribe(result => {
  if (result) {
   if (!Object.keys(this.serviceTable)[result.section]) {
     // No section found, lets create it ...
     this.serviceTable[this.randomNumber] = [result];
     console.log(this.serviceTable, 'ServiceTable')
   }
   else {
     this.serviceTable[this.randomNumber].push()
   }
}

if 语句运行良好,但 else 语句有问题,因为我收到此错误:

TS2339:“服务”类型上不存在属性“推送”。

我可能会收到此错误,因为 this.serviceTable[this.randomNumber] 不是数组。

所以如果数组中不存在键(this.randomNumber),就会创建它。但如果它已经存在,我想将新对象添加到同一个键中。

所以我的目标是调用属于特定键的所有对象,就像这样:

for (let item of this.serviceTable[3]) { // Instead of a number, it could also be a string. For instance, this.serviceTable['myCategory']
  console.log(item.service); // This should list all 'services' that belong to the key '3'
}

我该怎么做?


StackBlitz 上查看我的代码示例。

【问题讨论】:

  • 请提供一个独立的minimal reproducible example,以在您的帖子正文中以纯文本形式清楚地说明您面临的问题。理想情况下,我可以将此类代码粘贴到像 The TypeScript Playground 这样的独立 IDE 中,然后立即着手解决问题,而无需首先重新创建它。所以不应该有伪代码、拼写错误、不相关的错误或未声明的类型或值。 (如果您想提供一个很棒的游乐场链接,但也请将完整示例作为文本放在帖子正文中。)
  • @jcalz stackblitz.com/edit/angular-gwtceu?file=src/app/… ...这是我能得到的最好的,但我得到的结构完全相同。

标签: javascript typescript


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多