JavaScript如何在数组指定index后push多个对象元素
实现方案
使用 JavaScript 数组原生的 splice() 方法即可完成指定位置插入,该方法默认直接修改原数组,完全匹配你的需求。
核心规则
要在数组索引 n 对应的元素之后插入内容,调用 splice 时按如下规则传参:
- 第一个参数:插入起始位置,固定填
n + 1(你要在index=3后插入,这里就填4) - 第二个参数:填
0,代表不删除任何原有元素 - 后续参数:逐个传入你要插入的元素,由于待插入的
otherObj本身是数组,用展开运算符...把数组元素展开传入即可。
示例代码
对应你给出的场景,可直接运行的代码如下:
const currarr = [{id:1,name:"abc"},{id:2,name:"efg"},{id:3,name:"hij"},{id:4,name:"klm"},{id:5,name:"nop"}]; const otherObj = [{id:6,name:"fdf"},{id:7,name:"gfg"}]; // 执行插入:在index=3的元素后插入otherObj中的所有元素 currarr.splice(4, 0, ...otherObj);
执行完成后currarr的元素顺序为:
{id:1,name:"abc"}{id:2,name:"efg"}{id:3,name:"hij"}{id:4,name:"klm"}{id:6,name:"fdf"}{id:7,name:"gfg"}{id:5,name:"nop"}
补充说明
- 如果你不想修改原数组,可以先浅拷贝一份原数组再执行splice操作:
// 生成新数组,原currarr不会被改动 const newArr = [...currarr]; newArr.splice(4, 0, ...otherObj);
- 注意不要直接把
otherObj数组作为第三个参数传入splice,否则会把整个数组作为单个元素插入,而非展开其中的两个对象。 - 当指定的插入位置等于数组长度时(也就是在最后一个元素后插入),splice会自动把元素追加到数组末尾,效果和
push()一致,不会抛出越界错误。
内容的提问来源于stack exchange,提问作者vjtechno
相关产品推荐
相关产品推荐

