首页 > 解决方案 > 将项目从另一个数组添加到对象数组

问题描述

我有一个这样的数组:

data = [1, 2, 3, 4, 5]

我有一个这样的对象数组:

obj = [{"Name":"ABC","Age":25,"Gender":"M"},
       {"Name":"DEF","Age":32,"Gender":"F"},
       {"Name":"PQR","Age":30,"Gender":"F"},
       {"Name":"XYZ","Age":30,"Gender":"F"}]

我需要将数据数组的每个元素推入数组的每个对象中。我的预期输出是这样的:

obj = [{"Name":"ABC","Age":25,"Gender":"M", "Data":1}, 
       {"Name":"DEF","Age":32,"Gender":"F", "Data":2}, 
       {"Name":"PQR","Age":30,"Gender":"F", "Data":3}, 
       {"Name":"XYZ","Age":30,"Gender":"F", "Data":4}]

我试过这样:

for(let i = 0; i<data.length; i++){
   obj.push({data:data[i])
}

但这给出了这样的错误结果:

obj = [{"Name":"ABC","Age":25,"Gender":"M"},
       {"Name":"DEF","Age":32,"Gender":"F"}, 
       {"Name":"PQR","Age":30,"Gender":"F"},
       {"Name":"XYZ","Age":30,"Gender":"F"}, 
       {"Data":1},{"Data":2},{"Data":3},{"Data":4}]

我知道这是因为在将项目推入对象数组之前,我没有遍历对象数组。但是我无法同时遍历数据和 obj。请帮我解决问题。提前致谢。

标签: javascriptarraysjavascript-objects

解决方案


有多种方法可以实现预期的输出。这是其中一种方法,循环使用数组Array.map和解构

const data = [{"Name":"ABC","Age":25,"Gender":"M"}, {"Name":"DEF","Age":32,"Gender":"F"},{"Name":"PQR","Age":30,"Gender":"F"},{"Name":"XYZ","Age":30,"Gender":"F"}];
const array = [1, 2, 3, 4, 5];

const formattedData = (data, array) => data.map((obj, i) => (  
  {
    ...obj,
    Data: array[i]
  }
));

console.log(formattedData(data, array));
.as-console-wrapper {
  max-height: 100% !important;
}


推荐阅读