use*_*035 3 javascript arrays reduce
嗨,我试图使用reduce方法从对象数组创建一个对象映射,但没有找到添加2个属性作为键的方法.假设我有一些像这样的对象 -
const students = [
{
name: "sam",
age: 26,
},
{
name: 'john",
age: 30,
}
]
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个类似的地图
{
sam_26:{
name: "sam",
age: 26,
}
}
Run Code Online (Sandbox Code Playgroud)
我的reduce函数代码:
students.reduce((obj, student) => {
`${obj[student.name]}_${obj[student.age]}` = student;
return obj;
}, {});
Run Code Online (Sandbox Code Playgroud)
这没用.任何指针都会有所帮助..谢谢!
使用从student对象获取的值创建密钥.使用以下命令将电流分配student给obj(累加器)key:
const students = [{
name: "sam",
age: 26,
},
{
name: "john",
age: 30,
}
];
const result = students.reduce((obj, student) => {
const key = `${student.name}_${student.age}`;
obj[key] = student;
return obj;
}, {});
console.log(result);Run Code Online (Sandbox Code Playgroud)
使用回调创建密钥的通用方法:
const keyBy = (arr, cb) =>
arr.reduce((r, o) => {
const key = cb(o);
r[key] = o;
return r;
}, {});
const students = [{"name":"sam","age":26},{"name":"john","age":30}];
const result = keyBy(students, (o) => `${o.name}_${o.age}`);
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |