我在设置始终唯一索引时增加一个问题。
我有一个像这样的数组。
const parentArr = [
{
name: 'first parent array',
childArray: [
{
name: '1 / first child'
},
{
name: '1 / second child'
}
]
},
{
name: 'second parent array',
childArray: [
{
name: '2 / first child array'
},
{
name: '2 / second child array'
}
]
}
]
我期望这样的结果:
const expectedResult = [
{
name: 'first parrent array',
additionalInfo: [
{
index: 0,
name: '1 - first child'
},
{
index: 1,
name: '1 - second child'
}
]
},
{
name: 'second parrent array',
additionalInfo: [
{
index: 2,
name: '2 -first child array'
},
{
index: 3,
name: '2- second child array'
}
]
}
]
我想在从0开始的每个项目的extraInfo内都有索引。
我这样尝试过,但是索引编号错误
return parentArr.map((parent) => {
return {
name: parent.name,
additionalData: parent.childArray.map((child, index) => ({
name: child.name
index: index // I'M STUCK ON THIS LINE
})),
};
});
答案 0 :(得分:3)
您必须独立于循环来管理子级的索引。那呢?
let i = 0;
return parentArr.map((parent) => {
return {
name: parent.name,
additionalData: parent.childArray.map((child) => ({
name: child.name
index: i++
})),
};
});
答案 1 :(得分:1)
索引计数应位于地图外部,因为它将在每次迭代时重置。
您可以将此行为抽象为可重用的方法,如下所示。
const parentArr = [
{
name: 'first parent array',
childArray: [
{
name: '1 / first child'
},
{
name: '1 / second child'
}
]
},
{
name: 'second parent array',
childArray: [
{
name: '2 / first child array'
},
{
name: '2 / second child array'
}
]
}
];
const transformArray = root => {
let i = 0;
return root.map(({ name, childArray }) => ({
name,
additionalData: childArray.map(({ name }) => ({
index: i++,
name
}))
}));
};
console.log(transformArray(parentArr));