【发布时间】:2021-07-20 09:11:55
【问题描述】:
我有一个类似这样的对象数组
arr = [{"class":"section"},{"fieldGroup":[]},{"class":"col","name":"input"},{"class":"col","name":"dropdown"},{"class":"col","name":"date"},{"fieldGroup":[]},{"class":"col","name":"table"}]
现在我需要将带有"class":"col" 的对象移到其包含"fieldGroup" 的上一个对象中
所以我想要的输出应该是这样的
arr = [{"class":"section"},{"fieldGroup":[{"class":"col","name":"input"},{"class":"col","name":"dropdown"},{"class":"col","name":"date"}]},{"fieldGroup":[{"class":"col","name":"table"}]}]
这段代码我试过了
arr.forEach((item: any, index: number) => {
if (item.class === "col") {
arr[index - 1].fieldGroup.push(item);
arr.splice(index, 1);
}else {
return arr;
}
})
但收到错误提示 cannot read property push of undefined
有什么帮助吗?
【问题讨论】:
-
使用计算属性名称 arr[index - 1][fieldGroup] 。否则,您正在索引中寻找“fieldGroup”属性。
-
这能回答你的问题吗? How to use a computed property name in ES5?
-
您是否 100% 确定带有
"class":"col"的对象总是前面有带有fieldGroup属性的项目?您收到的错误似乎表明带有"class":"col"的对象之前的对象没有fieldGroup属性。您提供的示例数据似乎可以正常工作。您是否有不起作用的示例? -
“我需要移动带有
"class":"col"的对象” - 为什么像{"class":"dropdown"}这样的其他对象在没有class的@ 时也会移动987654335@? -
对不起@NickParsons 我已经编辑了代码
标签: javascript arrays object foreach