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

JavaScript:如何将数组逐一插入对象?代码问题求助

问题分析与解决办法

兄弟,我瞅了下你的代码,发现几个小问题导致没得到预期的输出,咱们一步步来捋:

问题点拆解

  1. 拼写错误:你写的this.refdta={commodities};里的refdta是笔误,应该是refdata;另外console.log(this.refdat...也没写完,这会导致语法错误。
  2. 赋值逻辑错误:你每次都是直接把this.refdata重新赋值为一个全新的对象,比如this.refdata={locations};会把原本的refdata对象(包含locations和commodities两个空数组)直接替换成只有locations属性的新对象,后面的赋值又会覆盖掉前面的,最后自然得不到同时包含两个数组的结果。

正确的写法

方式一:直接给对象属性赋值(最直观)

如果是在普通环境下:

var refdata = { locations: [], commodities: [] }
var locations=[ { "symbol": "IND", "name": "INDIA" } ]
var commodities= [ { "name": "Aluminium", "symbol": "AL" } ]

// 直接给refdata的对应属性赋值,而不是替换整个对象
refdata.locations = locations;
refdata.commodities = commodities;

console.log(refdata);
// 输出:{ locations: [ { symbol: 'IND', name: 'INDIA' } ], commodities: [ { name: 'Aluminium', symbol: 'AL' } ] }

如果是在类/组件中使用this的场景:

// 先初始化refdata对象
this.refdata = { locations: [], commodities: [] };
const locations=[ { "symbol": "IND", "name": "INDIA" } ];
const commodities= [ { "name": "Aluminium", "symbol": "AL" } ];

// 给this.refdata的属性赋值,而非替换整个对象
this.refdata.locations = locations;
this.refdata.commodities = commodities;

console.log(this.refdata);

方式二:用对象扩展运算符合并(适合需要保留原有属性的场景)

如果你的refdata原本还有其他属性,不想丢失,可以用扩展运算符来合并:

this.refdata = {
  ...this.refdata, // 保留原有所有属性
  locations,       // 覆盖locations属性
  commodities      // 覆盖commodities属性
};

这样操作后,refdata对象就会同时包含你想要的locations和commodities两个数组啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:52:57