为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

小唯快跑啊 2023-10-14 15:43:56
我有 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]);但后来这个名字就出局了整个事情应该是动态的,这也会带来额外的问题,我无法手动设置我需要的值。
查看完整描述

4 回答

?
繁华开满天机

TA贡献1816条经验 获得超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);


查看完整回答
反对 回复 2023-10-14
?
九州编程

TA贡献1785条经验 获得超4个赞

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)


查看完整回答
反对 回复 2023-10-14
?
慕容708150

TA贡献1831条经验 获得超4个赞

您可以像下面这样执行此操作(注意:不需要变量 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 循环内您都会覆盖对象的值


查看完整回答
反对 回复 2023-10-14
?
呼如林

TA贡献1798条经验 获得超3个赞

我认为你可以尝试这样的事情,基本上,我们通过 x1 并用相应的数据构建结果。


var result = {}

for(i = 0; i < x1.length; i++) {

  result[i] = {}

  result[i]["country"] = x1[i]

  result[i][name1] = y1[i]

  result[i][name2] = y2[i]

}


console.log(result)


查看完整回答
反对 回复 2023-10-14
  • 4 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信