【发布时间】:2020-12-19 05:16:55
【问题描述】:
我有这个对象,它有很多元素,比如数组中的几个其他对象。
有两个数组:
对象数组1:
里面是这样的:
子表单和部分
层次结构是:
[0]--
title
|
section [
properties|
[[***target***]]
|
title
]
subform [
properties|
[[***target***]]
|
title
]
[1]--
|
section [
properties|
[[***target***]]
|
title
]
subform [
properties|
[[***target***]]
|
title
]
我正在尝试做的是有选择地选择这样的标题:
我像这样实例化私有 obj:
private obj = {
data: [{
subform: '',
section: '',
field: ''
}]
};
并运行 for/next 循环来填充 obj OBJECT
for (let i = 0; i < this.dataTableJSON.length; i++) {
this.obj.data[i].subform = this.dataTableJSON[i].subform.properties.title;
this.obj.data[i].section = this.dataTableJSON[i].section.properties.title;
this.obj.data[i].field = this.dataTableJSON[i].title;
}
发生的情况是,它大约运行 1 次,然后返回“1”,并在错误控制台中显示:
无法设置未定义的属性“子表单”。
我寻求的结果就是这样:
private obj = {
data: [{
subform: 'Title 1',
section: 'Section Title 1',
field: 'Field Title 1'
},{
subform: 'Title 2',
section: 'Section Title 2',
field: 'Field Title 2'
}]
};
为什么第二次就死了?这太简单了……我正在使用 TYPESCRIPT
DAI 更新:
戴,我 99% 都在那儿……
在实现代码的时候,我写了如下枚举。
export interface DataItem {
subform: string;
section: string;
field: string;
};
export type ObjType = {
data: DataItem[]
};
这是上面的导入
import {DataItem, ObjType} from '../../../services/datatables-integration-services/datatables-datatypes-enum';
在实际的 component.ts 文件中,我把这个:
private readonly obj: ObjType = {
data: []
};
我按照你说的实现了 for/next 循环。
for (let i = 0; i < this.dataTableJSON.length; i++) {
const dataCopy: DataItem = {
subform = this.dataTableJSON[i].subform.properties.title,
section = this.dataTableJSON[i].section.properties.title,
field = this.dataTableJSON[i].title
};
this.obj.data[i] = dataCopy;
}
以下是我遇到的错误,为了克服我需要更改的错误
这个
subform = this.dataTableJSON[i].subform.properties.title,
section = this.dataTableJSON[i].section.properties.title,
field = this.dataTableJSON[i].title
致此
subform: this.dataTableJSON[i].subform.properties.title,
section: this.dataTableJSON[i].section.properties.title,
field: this.dataTableJSON[i].title
正在测试
而且它有效!呸!
谢谢戴!
DAI 更新:
我有一个小错误:
最终的 JSON 需要如下所示
{
"data": [
{
field: "Social Security number"
required: true
section: "Employee Information"
subform: "Personal Information"
},
{
field: "Country of issuance"
required: true
section: "Eligibility Information"
subform: "Employment Eligibility"
}
]
}
抱歉,戴...再次感谢
【问题讨论】:
-
只有在该索引处存在正确类型的对象实例时,才能分配给数组中索引元素的成员。
-
好的,太好了,告诉我这太棒了...我如何得到我想要的并修复它,拜托!此外,这实际上可能是动态的。这意味着 data[] 之后的所有内容可能不是 section.title、subform.title 或 title。我尝试了 push 但这不会导致除了 {} 为 0 之外的任何内容,即 1:title1、2:title 2 不在 {} 内
-
我的评论解释了你的代码有什么问题。如果您需要帮助理解我写的内容,请向我详细说明 - 否则我觉得我的评论确实解释了如何解决它。请不要讽刺。
-
戴,很抱歉你这么说。我以为你明白,如果你提出建议,你会提供一个我可以为你投票的解决方案
-
我没有在我的评论中提供完整的答案 - 这更多是在正确方向上的提示或推动。但我现在提供了更全面的答案。
标签: arrays typescript javascript-objects