如何在 JS 数组的任意位置插入一个新元素?

新手上路,请多包涵

我有一个数组 [a, b, c] 。我希望能够像这样在这个数组的每个元素之间插入一个值: [0, a, 0, b, 0, c, 0]

我想它会是这样的,但我不能让它工作。

 for (let i = 0; i < array.length; i++) {
    newArray = [
        ...array.splice(0, i),
        0,
        ...array.splice(i, array.length),
    ];
}

感谢你们对我的帮助!

原文由 Philippe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 354
2 个回答

为了获得一个新数组,您可以连接该部分并为每个元素添加一个零元素。

 var array = ['a', 'b', 'c'],
    result = array.reduce((r, a) => r.concat(a, 0), [0]);

console.log(result);

使用相同的数组

 var array = ['a', 'b', 'c'],
    i = 0;

while (i <= array.length) {
    array.splice(i, 0, 0);
    i += 2;
}

console.log(array);

从末尾开始迭代会更短一些。

 var array = ['a', 'b', 'c'],
    i = array.length;

do {
    array.splice(i, 0, 0);
} while (i--)

console.log(array);

原文由 Nina Scholz 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果要排除数组的开头和结尾,另一种方法是:

 var arr = ['a', 'b', 'c']
var newArr = [...arr].map((e, i) => i < arr.length - 1 ? [e, 0] : [e]).reduce((a, b) => a.concat(b))

console.log(newArr)

原文由 Vincent Menant 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题