将对象数组转换为对象

我有一个数组,看起来像这样:


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,但由于我可能没有很好地使用它,所以它会产生非常糟糕的结果。


斯蒂芬大帝
浏览 170回答 2
2回答

qq_笑_17

假设您希望名称作为键,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);

阿晨1998

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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript