我有一个多维对象数组:
var arr = [
{
id: '10c',
name: 'item 1'
children: [
{id: '11v', name: 'Item 1 child 1'},
{id: '12c', name: 'Item 1 child 2'}
]
},
{
id: '13v',
name: 'item 2'
children: [
{id: '26e', name: 'Item 2 child 1'},
{id: '7a', name: 'Item 2 child 2'}
]
}
]
和另一个数据对象:
var array = [
{id: '12c', name: 'New name 1'},
{id: '26e', name: 'New name 2'},
{id: '11v', name: 'New name 3'},
];
如果我想根据array<中的
,最好的方法是什么?id
值更新arr
中各个对象的name
值
arr
可能超过 2 层深,所以我希望能够做到这一点而不必嵌套多个 forEach
最佳答案
试试这个:
function update(items, id, name) {
var item;
for (var i = 0; i < items.length; i++) {
item = items[i];
if (item.id === id) {
item.name = name;
return;
}
if (item.children) {
update(item.children, id, name);
}
}
}
然后:
update(arr, '11v', 'test');
通过数组
更新:
array.forEach(function (item) {
update(arr, item.id, item.name);
});
关于javascript - 更新嵌套数组中的多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340511/