gpt4 book ai didi

javascript - 如何在多数组循环中的特定位置插入项目

转载 作者:行者123 更新时间:2023-12-04 14:53:40 25 4
gpt4 key购买 nike

我正在遍历以下数组数组,对于数组中的第一项,我需要在每一项之后插入一个对象,第一项和最后一项除外。数据看起来像这样......

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'}。对于其余行,对于具有 Angular 色对象的第一个项目数组中的每个索引,我想复制以前的值,这样如果修改后的第一个数组是:['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
})

非常感谢您的帮助。

最佳答案

也许我误解了什么。我假设如下:

::data数组中每个数组的长度相同。

::您需要在每个位置之后注入(inject),这会弄乱一个 for 循环,增加它的 i(teration) 变量。

::第一个数组中总是有一个Path 和一个Score

::你想在每个值之后添加一个新值,除了上面两个。

解决方案

  1. 获取每个数组的长度:data[0].length
  2. 从最后开始循环。
  3. 忽略最后位置。
  4. 忽略第一个位置
  5. 根据它是否是数据数组中的第一项来拼接不同的值。

我循环遍历每个值一次,但我按以下顺序执行:'Item5', 4, 6, 3, 3, 'Item4', 2, 5, 5, 2, 'Item3', ...

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],
]

function mapArray(data) {
let secondToLastItem = data[0].length - 2; // 1 & 3
let FIRST_ITEM = 0; // 4

for (let index = secondToLastItem; index > FIRST_ITEM; index--) { // 2
for (let item = 0; item < data.length; item++) {
let injectedValue = (item == FIRST_ITEM) // 5
? {'role': 'annotation'}
: data[item][index];

data[item].splice(index + 1, 0, injectedValue);
}
}

return data;
}

console.log( mapArray(data) );

关于javascript - 如何在多数组循环中的特定位置插入项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68582345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com