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

将对象数组转换为对象

将对象数组转换为对象

斯蒂芬大帝 2022-09-23 10:00:57
我有一个数组,看起来像这样:tab [    0: {        firstName: John,        lastName: Doe,                    situation: married,        familyMembers: 5,    }    1: {        firstName: Jack,        lastName: Daniel,        situation: single,        familyMembers: 6,    }]我需要这样的东西:{    [John]: {[Doe]: 5,    [Jack]: {[Daniel]: 6,}我尝试了这样的事情:tab.map((item) => {    return (        {[item.firstName]: {[item.lastName]: item.familyMembers}}    )})但是,即使不考虑我有一个数组而不是一个对象,结果看起来像这样:[    0: {        [John]: {[Doe]: 5,    }    1: {        [Jack]: {[Daniel]: 6,    }]这里的任何建议将不胜感激,我尝试使用rewod,但由于我可能没有很好地使用它,所以它会产生非常糟糕的结果。
查看完整描述

2 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

假设您希望名称作为键,yxou可以构建条目并从中构建对象。


var tab = [{ firstName: 'John', lastName: 'Doe', situation: 'maried', familyMembers: 5 }, { firstName: 'Jack', lastName: 'Daniel', situation: 'single', familyMembers: 6 }],

    result = Object.fromEntries(tab.map(({ firstName, lastName, familyMembers }) =>

        [firstName, { [lastName]: familyMembers }]

    ));


console.log(result);


查看完整回答
反对 回复 2022-09-23
?
阿晨1998

TA贡献2037条经验 获得超6个赞

map()始终返回函数结果的数组。


您可以改用reduce()


var tab = [{

    firstName: 'John',

    lastName: 'Doe',

    situation: 'maried',

    familyMembers: 5,

  },

  {

    firstName: 'Jack',

    lastName: 'Daniel',

    situation: 'single',

    familyMembers: 6,

  }

];

var result = tab.reduce((obj, item) => {

  obj[item.firstName] = {

    [item.lastName]: item.familyMembers

  };

  return obj;

}, {});

console.log(result);


查看完整回答
反对 回复 2022-09-23
  • 2 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

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