我有以下嵌套数组,我保留和保持不变,但也附加了一个名为indexes
的属性到每个嵌套的items
对象,它存储了一个自上而下的索引列表,这样我就可以跟踪嵌套的项目,当我扁平化数组并在我的应用程序的其他地方使用它。
[
{
cat: '1'
items: [
{
media: [
{
type: 'image'
}
]
},
{
media: [
{
type: 'image'
}
]
},
{
media: [
{
type: 'image'
}
]
}
]
},
{
cat: '2',
items: [
{
media: [
{
type: 'image'
},
{
type: 'image'
}
]
}
]
},
{
cat: '3',
items: [
{
media: [
{
type: 'image'
}
]
}
]
}
];
我希望它看起来像下面这样,其中indexes
从0
开始的第一项,media
数组中的每个出现附加一个递增的数字并将其绑定为属性。
[
{
cat: '1',
items: [
{
indexes: [0],
media: [
{
type: 'image'
}
]
},
{
indexes: [1],
media: [
{
type: 'image'
}
]
},
{
indexes: [2],
media: [
{
type: 'image'
}
]
}
]
},
{
cat: '2',
items: [
{
indexes: [3, 4],
media: [
{
type: 'image'
},
{
type: 'image'
}
]
}
]
},
{
cat: '3',
items: [
{
indexes: [5],
media: [
{
type: 'image'
}
]
}
]
}
];
最好的方法是什么?
在我看来,最优雅的方法是使用forEach
循环遍历所有条目。
const cats = [{
cat: '1',
items: [{
media: [{
type: 'image'
}]
},
{
media: [{
type: 'image'
}]
},
{
media: [{
type: 'image'
}]
}
]
},
{
cat: '2',
items: [{
media: [{
type: 'image'
},
{
type: 'image'
}
]
}]
},
{
cat: '3',
items: [{
media: [{
type: 'image'
}]
}]
}
];
let totalIndex = 0
cats.forEach(cat => {
cat.items.forEach(item => {
item.indexes = item.media.map(() => totalIndex++)
})
})
console.log(cats)