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

将对象数组转换为对象

将对象数组转换为对象

斯蒂芬大帝 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贡献1495条经验 获得超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贡献1732条经验 获得超5个赞

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 关注
  • 9 浏览
慕课专栏
更多

添加回答

举报

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