我需要在每个第n个成员之后在Javascript数组中插入一个新成员。
如果我尝试迭代数组并使用array.splice()
插入新成员,它就不起作用,因为任何类型的迭代循环都依赖于数组长度,这在每次迭代时都会发生变化。例如,我有像:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
并希望如下:
[1, 2, 'insert this', 3, 4, 'insert this', 5, 6, 'insert this', 7, 8, 'insert this', 9, 10, 'insert this']
如果我尝试下面的代码,我最终得到空数组:
var dataRow = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for (var itemIndex = 2; itemIndex < dataRow.length; itemIndex += 2) {
dataRow.splice(itemIndex, 0, 'insert this');
}
这个问题并不是人们只想获得数组成员或将其插入某个特定位置的问题的重复。问题是,如何在每个第n个位置都这样做。
答案 0 :(得分:1)
只需将您的代码更改为此即可。添加3到itemIndex也考虑1次插入。
var dataRow = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for (var itemIndex = 2; itemIndex < dataRow.length; itemIndex += 3) {
dataRow.splice(itemIndex, 0, 'insert this');
}
console.log(dataRow);
&#13;
答案 1 :(得分:1)
您可以从最后进行迭代并拼接额外的项目。
var dataRow = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for (var itemIndex = Math.floor(dataRow.length / 2) * 2; itemIndex > 0; itemIndex -= 2) {
dataRow.splice(itemIndex, 0, 'insert this');
}
console.log(dataRow);
&#13;
答案 2 :(得分:1)
var dataRow = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var length = dataRow.length;
for (var i = 1; i <= length / 2; i++) {
dataRow.splice(i * 3 - 1, 0, 'insert this');
}
console.log(dataRow);
希望这有效!