[英]How to Add an item to All Tree Array's Objects in Js?
我想按顺序 id 树数组中的所有对象。 为此,我需要迭代所有数组对象和对象的子对象、孙子对象等,并将rowId插入到每个对象中。
我拥有的;
rows={[
{
car: 'Audi A4',
city: 'Las Vegas',
items: null,
name: 'Sandra',
sex: 'Female'
},
{
car: 'Chevrolet Cruze',
city: 'Tokyo',
items: [
{
car: 'BMW 750',
city: 'London',
items: [
{
car: 'Toyota Corolla',
city: 'Chicago',
name: 'David',
sex: 'Male'
},
],
name: 'Robert',
sex: 'Male'
}
],
name: 'Sharon',
sex: 'Female'
}
]}
我所期待的;
rows={[
{
car: 'Audi A4',
city: 'Las Vegas',
items: null,
name: 'Sandra',
sex: 'Female',
rowId: 1
},
{
car: 'Chevrolet Cruze',
city: 'Tokyo',
items: [
{
car: 'BMW 750',
city: 'London',
items: [
{
car: 'Toyota Corolla',
city: 'Chicago',
name: 'David',
sex: 'Male',
rowId: 2
},
],
name: 'Robert',
sex: 'Male',
rowId: 3
}
],
name: 'Sharon',
sex: 'Female',
rowId: 4
}
]}
当没有内部对象时,我可以像这样进行迭代;
rows.map((row, index) => ({ ...row, rowId: index }));
还尝试了一些递归方法,但实际上没有一个有效,也没有在网上找到有用的东西。
寻找可以指导我完成此操作的天才开发人员。 提前致谢。
您可以采用深度优先搜索算法并将id
添加到每个对象。
const addId = (data, id) => { const iter = array => array.forEach(o => { if (o.items) iter(o.items); // search first o.id = id++; // add later }); iter(data); }; var rows = [{ car: 'Audi A4', city: 'Las Vegas', items: null, name: 'Sandra', sex: 'Female' }, { car: 'Chevrolet Cruze', city: 'Tokyo', items: [{ car: 'BMW 750', city: 'London', items: [{ car: 'Toyota Corolla', city: 'Chicago', name: 'David', sex: 'Male' },], name: 'Robert', sex: 'Male' }], name: 'Sharon', sex: 'Female' }]; addId(rows, 1); console.log(rows);
.as-console-wrapper { max-height: 100% !important; top: 0; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.