Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Lodash_Javascript Objects_Key Value - Fatal编程技术网

Javascript 展平包含键值的对象数组

Javascript 展平包含键值的对象数组,javascript,arrays,lodash,javascript-objects,key-value,Javascript,Arrays,Lodash,Javascript Objects,Key Value,假设我有以下存储单个键\值对的对象数组: var someArray = [ {foo: 1}, {bar: 2} ]; 我想将此数组展平为单个对象,其中来自原始对象的每个关键点都成为新单个对象的属性,如下所示: someObject = { foo: 1, bar: 2 } 我将始终拥有唯一的密钥,并且只有一个密钥\值配对 我知道如果我在foreach中循环数组,那么我只能访问该项的索引和值,例如 0: {foo: 1} 我希望能够循环,当访问该项时,分别

假设我有以下存储单个键\值对的对象数组:

var someArray = [
    {foo: 1},
    {bar: 2}
];
我想将此数组展平为单个对象,其中来自原始对象的每个关键点都成为新单个对象的属性,如下所示:

someObject = {
    foo: 1,
    bar: 2
}
我将始终拥有唯一的密钥,并且只有一个密钥\值配对

我知道如果我在foreach中循环数组,那么我只能访问该项的索引和值,例如

0: {foo: 1}
我希望能够循环,当访问该项时,分别读取键和值,以便可以附加到新对象上

我觉得洛达斯应该能帮上忙,但我正在努力寻找他们的哪些方法能帮上忙

有人能给我指出正确的方向吗

谢谢

您可以迭代并使用以获得具有所有属性的新对象

var someArray=[{foo:1},{bar:2}],
result=someArray.reduce(函数(r,a){
返回Object.assign(r,a);
}, {});

控制台日志(结果)使用
reduce
Object assign
可以快速完成此操作:

var someArray=[
{foo:1},
{bar:2}
];
var result=someArray.reduce((acc,obj)=>Object.assign(acc,obj),{})
console.log(结果)

.as控制台包装{max height:100%!important;top:0;}
这里不需要lodash,只需使用
Object.assign()
和扩展语法即可

var someArray=[
{foo:1},
{bar:2}
];
var obj=Object.assign({},…someArray)

log(obj)
当您有[{foo:1,bar:1},{foo:2:bar:2}]时,这个问题的逻辑会发生一些变化。您将得到第二个对象。是否可以调整此逻辑以将所有关系放入单个对象中?为此情况编写所需的输出。{“foo”:1,“bar”:1,“foo”:2,“bar”:2}这是无效的结果,您不能重复键。{“foo”:1,“bar”:2,“test”:3,“test2”:4}