Sam*_*Sam 0 javascript arrays data-structures
我有一个数组:
const arr = [
{ name: "Jeff", id: 1 },
{ name: "Mary", id: 2 },
{ name: "Jeff", id: 3 },
{ name: "Mary", id: 4 },
{ name: "Emile", id: 5 },
];
Run Code Online (Sandbox Code Playgroud)
我想把它变成这样:
const obj = {
Jeff: [1, 3],
Mary: [2, 4],
Emile: [5],
};
Run Code Online (Sandbox Code Playgroud)
我尝试使用该Array.reduce方法,但我似乎无法理解其中的逻辑。
const obj = arr.reduce((acc, info) => {
acc[info[name]] = ....
return acc;
}, {});
Run Code Online (Sandbox Code Playgroud)
我认为可以用reduce方法来完成
你走在正确的轨道上,你只需要检查数组是否存在。
const arr = [
{ name: "Jeff", id: 1 },
{ name: "Mary", id: 2 },
{ name: "Jeff", id: 3 },
{ name: "Mary", id: 4 },
{ name: "Emile", id: 5 },
];
const result = arr.reduce((acc, { name, id }) => {
acc[name] = acc[name] || []; // or if(!acc[name]) acc[name] = [];
acc[name].push(id);
return acc;
}, {});
console.log(result);Run Code Online (Sandbox Code Playgroud)