Javascript 将对象的数组转换为数组的对象?
我想改变这个Javascript 将对象的数组转换为数组的对象?,javascript,ecmascript-6,Javascript,Ecmascript 6,我想改变这个 const a = [{ id: 1, name: 'a' }, { id: 2, name: 'b' }] 到 我被困在如何将id和名称推入对象中 arr.reduce((accum, val) => { let accum = { id: val.id, name: val.name } accum.id.push(val.id) /
const a = [{
id: 1,
name: 'a'
}, {
id: 2,
name: 'b'
}]
到
我被困在如何将id和名称推入对象中
arr.reduce((accum, val) => {
let accum = {
id: val.id,
name: val.name
}
accum.id.push(val.id) //it doesn't work like this
return accum
}, {})
您只是缺少正确的初始
acum
值,该值将包含所需的数组
const a=[{
id:1,
姓名:“a”
}, {
id:2,
姓名:'b'
}]
设arr=a.reduce((累计值,val)=>{
累计id推送(val.id);
累计名称推送(val.name);
返回累计
}, {
id:[],
姓名:[]
})
控制台日志(arr)
const a=[{
id:1,
姓名:“a”
}, {
id:2,
姓名:'b'
}]
const newObj={};
a、 forEach(ele=>{
常量{id,name}=ele;
newObj.id.push(id);
newObj.name.push(name);
})
console.log(newObj)代码>如果要为每个键构建一个值列表,可以减少每个项;对于每个项目,减少它们的键值对
在下面的示例中,keyValues
函数与示例数据解耦
constkeyvalues=(…项)=>
项目减少((账户,项目)=>
Object.entries(item).reduce((accIn,[key,value])=>
({…accIn[key]:[…(accIn[key]|[]),value]}),acout,{})
常数数据=[
{id:1,名称:'a'},
{id:2,名称:'b'}
];
日志(键值(…数据))代码>
.as console wrapper{top:0;max height:100%!important;}
您尚未初始化要推送的数组,因此出错。谢谢,我看到了@Kinglish
arr.reduce((accum, val) => {
let accum = {
id: val.id,
name: val.name
}
accum.id.push(val.id) //it doesn't work like this
return accum
}, {})