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

Angular中如何向JSON对象添加数组?测试案例问题排查

问题分析与解决方案

咱们先拆解下你测试案例2里的问题:

  1. 语法错误:你在obj.staff_changes.push()的参数对象里直接写newStaff.push(...),这不仅语法不合法(对象属性值不能这么写),而且newStaff此时既不是obj的属性,也没有被定义为独立变量,浏览器会直接抛出ReferenceError: newStaff is not defined的错误。
  2. 逻辑偏差:你的目标是给obj添加newStaff数组属性,但原代码里根本没有对obj.newStaff进行初始化和赋值的操作。

正确实现方式(给obj添加同级newStaff数组)

如果你的需求是让obj同时拥有staff_changes和newStaff两个同级的数组属性,代码应该这么写:

let obj = {staff_changes: []};
// 先给obj添加newStaff属性并初始化为空数组
obj.newStaff = [];
for (let i = 0; i < 4; i++) {
  // 往staff_changes里添加元素
  obj.staff_changes.push({ id: i });
  // 往newStaff里添加对应的元素
  obj.newStaff.push({ id: 'staff'+i });
}
console.log(obj);

执行后,obj的结构会是:

{
  staff_changes: [ { id: 0 }, { id: 1 }, { id: 2 }, { id: 3 } ],
  newStaff: [ { id: 'staff0' }, { id: 'staff1' }, { id: 'staff2' }, { id: 'staff3' } ]
}

另一种可能的需求(每个staff项包含专属newStaff)

如果你其实是想让staff_changes里的每个对象都包含自己的newStaff数组,那代码可以改成这样:

let obj = {staff_changes: []};
for (let i = 0; i < 4; i++) {
  obj.staff_changes.push({ 
    id: i,
    // 给每个staff项初始化newStaff数组并添加元素
    newStaff: [{ id: 'staff'+i }]
  });
}
console.log(obj);

此时obj.staff_changes里的每个元素都会有自己的newStaff数组,结构大概是:

{
  staff_changes: [
    { id: 0, newStaff: [ { id: 'staff0' } ] },
    { id: 1, newStaff: [ { id: 'staff1' } ] },
    // ... 其他项
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:39:33