JavaScript / 设置增量索引从0开始
JavaScript / Set Increment index from 0
我在设置始终唯一索引时遇到问题,递增一个。
我有一个这样的数组。
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'
}
]
}
]
我想在 additionalInfo 中为从 0 开始的每个项目创建索引。
我这样试过,但是我得到了错误的索引号
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
})),
};
});
您必须独立于循环管理子项的索引。那么这个呢?
let i = 0;
return parentArr.map((parent) => {
return {
name: parent.name,
additionalData: parent.childArray.map((child) => ({
name: child.name
index: i++
})),
};
});
索引计数应该存在于地图之外,因为这将在每次迭代时重置它。
您可以将此行为抽象为可重复使用的方法,如下所示。
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));
我在设置始终唯一索引时遇到问题,递增一个。
我有一个这样的数组。
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'
}
]
}
]
我想在 additionalInfo 中为从 0 开始的每个项目创建索引。
我这样试过,但是我得到了错误的索引号
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
})),
};
});
您必须独立于循环管理子项的索引。那么这个呢?
let i = 0;
return parentArr.map((parent) => {
return {
name: parent.name,
additionalData: parent.childArray.map((child) => ({
name: child.name
index: i++
})),
};
});
索引计数应该存在于地图之外,因为这将在每次迭代时重置它。
您可以将此行为抽象为可重复使用的方法,如下所示。
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));