我正在循环遍历以下的二维数组,并且对于每个子数组中的第一个元素,我需要在除第一个和可能的最后一个元素以外的每个元素之后插入一个对象。数据看起来像这样...
const data = [
['Path', 'Item1', 'Item2', 'Item3', 'Item4', 'Item5', 'Score'],
['/path-one', 1, 3, 2, 2, 4, 3],
['/path-two', 4, 5, 5, 5, 6, 3],
['/path-three', 5, 5, 3, 5, 3, 3],
['/path-four', 2, 3, 4, 2, 2, 3],
]
在第一行中,除了第一个和最后一个项目外,我想在每个其他项目之后插入一个对象{role: 'annotation'}
。对于其余的行,对于第一个项目数组中具有角色对象的每个索引,我想复制上一个值,使得修改后的第一个数组为:
['Path', 'Item1', {role: 'annotation'}, 'Item2', {role: 'annotation'}, 'Score']
,然后其他数组将按照模式['/path-one', 'value1', 'value1', 'value2', 'value2', 'value3']
进行。
到目前为止,我的解决方案是不足的。以下是我想到的...
let indexes = []
let scoreIndex
const result = data.map((item, index) => {
let clone = [...item]
item.map((i, ix) => {
if (index === 0) {
if (ix !== 0 && typeof clone[ix + 1] === 'string' && typeof clone[ix] !== 'object') {
if (clone[ix + 1] === 'Score') {
scoreIndex = ix
}
indexes.push(ix)
clone.splice((ix + 1), 0, {role: 'annotation'})
}
return i
} else {
if (indexes.includes(ix) && ix !== scoreIndex) {
item.splice((ix + 1), 0, i)
return i
}
return i
}
})
return clone
})
非常感谢您的帮助。