将对象数组转换为对象
Convert Array of Object to Object
我有一个如下所示的数组:
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,
}
]
如有任何建议我将不胜感激
map()
总是 returns 函数结果的数组。
您可以改用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);
假设您希望名称作为键,您可以构建条目并从中构建对象。
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);
我有一个如下所示的数组:
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,
}
]
如有任何建议我将不胜感激
map()
总是 returns 函数结果的数组。
您可以改用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);
假设您希望名称作为键,您可以构建条目并从中构建对象。
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);