You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按索引为JavaScript数组中的对象添加属性

实现方法

你不需要用splice处理这个需求——splice的作用是增删数组的元素项,而你现在的需求是修改数组内已存在的某个对象的属性,直接通过数组索引拿到对应对象赋值即可,写法更简单性能也更好。

推荐写法(直接修改对象属性)

数组中存储的是对象的引用,直接访问索引位置的对象新增属性,会直接作用在原对象上:

test = [];

ngOnInit() {
  this.test.push({ "start": 0.1 });
  this.test.push({ "start": 0.2, "end": 0.5 });

  // 直接给0索引位置的对象添加end属性
  this.test[0].end = 0.15;

  this.test.forEach((res, index) => {
    console.log(index + "=" + res.start)
  })

  console.log(this.test);
}

如果一定要用splice的实现方式

如果你有特殊场景必须用splice,可以通过splice删除索引0的旧对象,再传入新增了属性的新对象作为替换项:

// splice参数说明:起始索引、要删除的元素个数、要插入的新元素
this.test.splice(0, 1, {
  ...this.test[0], // 展开原对象的所有属性
  end: 0.15 // 新增/覆盖end属性
});

这种写法会生成一个全新的对象替换原位置的元素,不会修改原来的0索引对象,适合有不可变数据要求的场景(比如配合NgRx状态管理时使用)。

运行结果

两种写法最终打印的test数组都完全符合你的预期:

[
  {
    "start": 0.1,
    "end": 0.15
  },
  {
    "start": 0.2,
    "end": 0.5
  }
]

内容的提问来源于stack exchange,提问作者user18158518

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 22:42:14