JavaScript:如何将数组逐一插入对象?代码问题求助
问题分析与解决办法
兄弟,我瞅了下你的代码,发现几个小问题导致没得到预期的输出,咱们一步步来捋:
问题点拆解
- 拼写错误:你写的
this.refdta={commodities};里的refdta是笔误,应该是refdata;另外console.log(this.refdat...也没写完,这会导致语法错误。 - 赋值逻辑错误:你每次都是直接把
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
相关产品推荐
相关产品推荐

