Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象的数组转换为数组的对象?_Javascript_Ecmascript 6 - Fatal编程技术网

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
  }, {})