Javascript:如何从多个数组和变量构造一个对象?

我有 2 组不同的数组需要合并到一个对象中


x1 = ['US', 'UK', 'China'];

y1 = [1,2,3];

name1 = 'CO2';


x2 = ['US', 'UK', 'China'];

y2 = [4,5,6];

name2 = 'GHG';

x1 和 x2 始终相同。


我理想的结果



[{'country': 'US', 'CO2': 1, 'GHG': 2},

{'country': 'UK', 'CO2': 2, 'GHG': 5},

{'country': 'China', 'CO2': 3, 'GHG': 6}]

我试图构造一个像这样的对象


var result = {};


x1.forEach(function (key,i) { result.country = key, result[name1] = y1[i] });

但它只返回最后一个值


{country: "China", CO2: 3}

像这样


x1.forEach((key, i) => result[key] = y1[i]);

但后来这个名字就出局了


整个事情应该是动态的,这也会带来额外的问题,我无法手动设置我需要的值。


小唯快跑啊
浏览 126回答 4
4回答

繁华开满天机

const x1 = ['US', 'UK', 'China'];const y1 = [1, 2, 3];const name1 = 'CO2';const x2 = ['US', 'UK', 'China'];const y2 = [4, 5, 6];const name2 = 'GHG';const result = x1.map((country, index) => ({  country,  [name1]: y1[index],  [name2]: y2[index]}));console.log(result);

九州编程

let x1=["US","UK","China"],y1=[1,2,3],name1="CO2",x2=["US","UK","China"],y2=[4,5,6],name2="GHG";let result = x1.map((e,idx) => ({country:x1[idx],co2:y1[idx],GHG:y2[idx]}))console.log(result)

慕容708150

您可以像下面这样执行此操作(注意:不需要变量 x2)-function createObj(x1,y1,y2, name1, name2){  var obj1={},         obj2={},         obj3={};  var result=[obj1, obj2, obj3];  result.forEach((obj, i)=>{    obj.country=x1[i];    obj[name1]=y1[i];    obj[name2]=y2[i];  })  return result;  }在您的代码中,您仅获得最后一个值,因为每次在 foreach 循环内您都会覆盖对象的值

呼如林

我认为你可以尝试这样的事情,基本上,我们通过 x1 并用相应的数据构建结果。var result = {}for(i = 0; i < x1.length; i++) {&nbsp; result[i] = {}&nbsp; result[i]["country"] = x1[i]&nbsp; result[i][name1] = y1[i]&nbsp; result[i][name2] = y2[i]}console.log(result)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript