Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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_Arrays_Array.prototype.map - Fatal编程技术网

Javascript 将对象数组转换为单个对象

Javascript 将对象数组转换为单个对象,javascript,arrays,array.prototype.map,Javascript,Arrays,Array.prototype.map,我试图将一个对象数组合并成一个对象,该对象合并了所有相似属性的值 objArray=[{ foo:[“f”,“b”], 酒吧:[“e”] }, { foo:[“a”,“c”], 酒吧:[“a”,“c”] }, { foo:[“f”,“b”], 条形图:[“z”] }]; 常数newObj={ foo:[], 酒吧:[] }; objArray.forEach((obj)=>{ newObj.foo.push(…obj.foo); 新obj.bar.push(…obj.bar); }); con

我试图将一个对象数组合并成一个对象,该对象合并了所有相似属性的值

objArray=[{
foo:[“f”,“b”],
酒吧:[“e”]
}, {
foo:[“a”,“c”],
酒吧:[“a”,“c”]
}, {
foo:[“f”,“b”],
条形图:[“z”]
}];
常数newObj={
foo:[],
酒吧:[]
};
objArray.forEach((obj)=>{
newObj.foo.push(…obj.foo);
新obj.bar.push(…obj.bar);
});
console.log(newObj)
可以使用
对象#entries()
的嵌套reduce()来迭代属性,而无需在任何地方硬编码特定的属性名称

objArray=[{
foo:[“f”,“b”],
酒吧:[“e”]
}, {
foo:[“a”,“c”],
酒吧:[“a”,“c”]
}, {
foo:[“f”,“b”],
条形图:[“z”]
}];
常数res=objArray.reduce((acc,c)=>{
返回Object.entries(c).reduce((a[k,v])=>{
a[k]=(a[k]| |[])。concat(v)
归还
},acc)
},{})
log(res)
可以使用
对象#条目()的嵌套reduce()来迭代属性,而无需在任何地方硬编码特定的属性名称

objArray=[{
foo:[“f”,“b”],
酒吧:[“e”]
}, {
foo:[“a”,“c”],
酒吧:[“a”,“c”]
}, {
foo:[“f”,“b”],
条形图:[“z”]
}];
常数res=objArray.reduce((acc,c)=>{
返回Object.entries(c).reduce((a[k,v])=>{
a[k]=(a[k]| |[])。concat(v)
归还
},acc)
},{})

console.log(res)
您可以为任意数量的键和值获取对象的条目

var data=[{foo:[“f”,“b”],bar:[“e”]},{foo:[“a”,“c”],bar:[“a”,“c”]},{foo:[“f”,“b”],bar:[“z”]},
合并=数据。减少((r,o)=>
Object.entries(o).reduce((s[k,v])=>
赋值(s,{[k]:(s[k]| |[]).concat(v)},r),{});
console.log(合并)

.as console wrapper{max height:100%!important;top:0;}
您可以获取对象的条目以获得任意数量的键和值

var data=[{foo:[“f”,“b”],bar:[“e”]},{foo:[“a”,“c”],bar:[“a”,“c”]},{foo:[“f”,“b”],bar:[“z”]},
合并=数据。减少((r,o)=>
Object.entries(o).reduce((s[k,v])=>
赋值(s,{[k]:(s[k]| |[]).concat(v)},r),{});
console.log(合并)

。作为控制台包装{max height:100%!important;top:0;}
要获得预期的结果,请使用Object.keys和使用forEach的两个循环

  • forEach的第一个循环将处理每个对象
  • 使用Object.keys的第二个循环将处理每个对象键,并使用键推送到新数组
  • 使用Object.hasOwnProperty将newObj中的值设置为具有原始数组对象属性的键
  • objArray=[
    {
    foo:[“f”,“b”],
    酒吧:[“e”],
    动物园:[“z”]
    },
    {
    foo:[“a”,“c”],
    酒吧:[“a”,“c”]
    },
    {
    foo:[“f”,“b”],
    条形图:[“z”]
    }
    ];
    常数newObj={
    foo:[],
    酒吧:[]
    };
    objArray.forEach(obj=>{
    Object.keys(obj.forEach)(v=>{
    if(新对象拥有自己的财产(v)){
    newObj[v].push(obj[v]);
    }
    });
    });
    
    console.log(newObj)要获得预期结果,请使用Object.keys和使用forEach的两个循环

  • forEach的第一个循环将处理每个对象
  • 使用Object.keys的第二个循环将处理每个对象键,并使用键推送到新数组
  • 使用Object.hasOwnProperty将newObj中的值设置为具有原始数组对象属性的键
  • objArray=[
    {
    foo:[“f”,“b”],
    酒吧:[“e”],
    动物园:[“z”]
    },
    {
    foo:[“a”,“c”],
    酒吧:[“a”,“c”]
    },
    {
    foo:[“f”,“b”],
    条形图:[“z”]
    }
    ];
    常数newObj={
    foo:[],
    酒吧:[]
    };
    objArray.forEach(obj=>{
    Object.keys(obj.forEach)(v=>{
    if(新对象拥有自己的财产(v)){
    newObj[v].push(obj[v]);
    }
    });
    });
    
    console.log(newObj)使用forEach作为您的代码,但
    用于内部

    var objArray=[{foo:[“f”,“b”],bar:[“e”]},{foo:[“a”,“c”],bar:[“a”,“c”]},{foo:[“f”,“b”],bar:[“z”]};
    var newObj={};
    objArray.forEach(o=>{
    对于(o中的p){
    如果(!(新词中的p)){
    newObj[p]=[];
    }
    newObj[p]=[…newObj[p],…o[p]];
    }
    });
    
    console.log(newObj)使用forEach作为您的代码,但
    用于内部

    var objArray=[{foo:[“f”,“b”],bar:[“e”]},{foo:[“a”,“c”],bar:[“a”,“c”]},{foo:[“f”,“b”],bar:[“z”]};
    var newObj={};
    objArray.forEach(o=>{
    对于(o中的p){
    如果(!(新词中的p)){
    newObj[p]=[];
    }
    newObj[p]=[…newObj[p],…o[p]];
    }
    });
    
    console.log(newObj)
    获取@charlietfl答案并为IE编辑它(使用
    Object.keys
    而不是
    Object.entries

    objArray=[{
    foo:[“f”,“b”],
    酒吧:[“e”]
    }, {
    foo:[“a”,“c”],
    酒吧:[“a”,“c”]
    }, {
    foo:[“f”,“b”],
    条形图:[“z”]
    }];
    常数res=objArray.reduce((acc,c)=>{
    返回Object.keys(c).reduce((a,k)=>{
    设v=c[k];
    a[k]=(a[k]| |[])。concat(v);
    返回a;
    },acc);
    }, {});
    
    console.log(res)
    获取@charlietfl答案并为IE编辑它(使用
    Object.keys
    而不是
    Object.entries

    objArray=[{
    foo:[“f”,“b”],
    酒吧:[“e”]
    }, {
    foo:[“a”,“c”],
    酒吧:[“a”,“c”]
    }, {
    foo:[“f”,“b”],
    条形图:[“z”]
    }];
    常数res=objArray.reduce((acc,c)=>{
    返回Object.keys(c).reduce((a,k)=>{
    设v=c[k];
    a[k]=(a[k]| |[])。concat(v);
    返回a;
    },acc);
    }, {});
    
    console.log(res)
    可能重复的Not dupe@nisarg可能重复的Not dupe@nisarg如果数组中有一个对象看起来像
    {foo:[“f”,“b”],bar:[“z”],zoo:[“123”]}
    @ibrahimmahrir,用Object.hasownproperty检查更新了我的答案如果数组中有一个对象看起来像
    {foo:[“f”,“b”]、bar:[“z”]、zoo:[“123”]}
    @ibrahimmahrir,用Object.hasownproperty检查更新了我的答案谢谢。我意识到我可以