You need to enable JavaScript to run this app. JavaScript往数组push对象时出现值重复问题如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript往数组push对象时出现值重复问题如何解决?

问题原因

JavaScript中对象属于引用类型,你的代码里jsuOrderSet是在循环外定义的,全程只有这一个对象实例,每次循环修改的都是同一个对象的属性。调用push方法时只是把这个对象的内存引用存到数组里,并不是复制了全新的对象。循环结束后这个对象的属性是最后一次迭代赋值的JSU21729,所以数组里所有引用指向的对象值都是一致的。

修复方案

方案1:循环内每次创建新对象

把jsuOrderSet的定义移到for循环内部,每次迭代都生成一个全新的对象:

let jsuOrderData = [];

let response = [{
    itemno: 1,
    jsuordref: 'JSU21628'
  },
  {
    itemno: 1,
    jsuordref: 'JSU21729'
  },
];
console.log(response);

for (let i = 0; i < response.length; i++) {
  // 每次循环新建独立对象
  let jsuOrderSet = {
    jsuOrder: response[i].jsuordref,
    itemNo: response[i].itemno
  };
  jsuOrderData.push(jsuOrderSet);
}
console.log(jsuOrderData);

方案2:用数组map方法简化写法

更推荐用原生数组的map方法实现,代码更简洁易读:

const response = [{
    itemno: 1,
    jsuordref: 'JSU21628'
  },
  {
    itemno: 1,
    jsuordref: 'JSU21729'
  },
];
const jsuOrderData = response.map(item => ({
  jsuOrder: item.jsuordref,
  itemNo: item.itemno
}));
console.log(jsuOrderData);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 20:27:03