JavaScript:为对象数组添加对应位置新属性的实现问题
解决对象数组对应添加另一数组元素作为属性的问题
你的问题出在直接将整个country数组赋值给了每个对象的country属性,导致每个对象的country都是完整数组,而不是对应位置的单个国家值。
map方法除了当前元素参数外,还提供了第二个参数——当前元素的索引值,利用这个索引就能匹配到country数组中对应位置的元素。
修正后的代码如下:
const mainArray = [{name: 'John', age: 30}, {name: 'Jane', age: 25}] const country = ['Germany', 'Japan'] const res = mainArray.map((x, index) => { // 用扩展运算符复制原对象所有属性,再添加新属性 return { ...x, country: country[index] } })
代码说明:
(x, index):index是当前元素在mainArray中的位置(从0开始计数)...x:ES6扩展运算符,快速复制原对象的所有属性,无需手动逐个编写name: x.name这类代码country: country[index]:通过索引取country数组中对应位置的国家值,实现两个数组元素的一一对应
执行后res的结果完全符合你的预期:
[{name: 'John', age: 30, country: 'Germany'}, {name: 'Jane', age: 25, country: 'Japan'}]
内容的提问来源于stack exchange,提问作者Gracie Boy
相关产品推荐
相关产品推荐

