展平包含 key\values 的对象数组
Flatten an array of objects containing key\values
假设我有以下对象数组存储单个 key\value 对:
var someArray = [
{foo: 1},
{bar: 2}
];
我想将此数组展平为单个对象,原始对象中的每个键都变成新单个对象的 属性,如下所示:
someObject = {
foo: 1,
bar: 2
}
我将永远拥有唯一的钥匙,并且只有一对 key\value。
我知道如果我在 foreach 中遍历数组,那么我只能访问项目的索引和值,例如
0: {foo: 1}
我希望能够循环,并且在访问项目时分别读取键和值,以便我可以附加到我的新对象上。
我觉得 lodash 应该可以在这里提供帮助,但我正在努力寻找他们的哪些方法可以提供帮助。
有人能指出我正确的方向吗?
谢谢
您可以迭代并使用 Object.assign
来获取具有所有属性的新对象。
var someArray = [{ foo: 1 }, { bar: 2 }],
result = someArray.reduce(function (r, a) {
return Object.assign(r, a);
}, {});
console.log(result);
这可以使用 reduce
和 Object assign
快速完成:
var someArray = [
{foo: 1},
{bar: 2}
];
var result = someArray.reduce((acc, obj) => Object.assign(acc, obj), {})
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
这里不需要 lodash,你可以只使用 Object.assign()
和传播语法。
var someArray = [
{foo: 1},
{bar: 2}
];
var obj = Object.assign({}, ...someArray)
console.log(obj)
您也可以使用 apply
而不是扩展语法
var obj = Object.assign.apply({}, someArray)
var someArray = [
{foo: 1},
{bar: 2}
];
var obj = Object.assign.apply({}, someArray)
console.log(obj)
假设我有以下对象数组存储单个 key\value 对:
var someArray = [
{foo: 1},
{bar: 2}
];
我想将此数组展平为单个对象,原始对象中的每个键都变成新单个对象的 属性,如下所示:
someObject = {
foo: 1,
bar: 2
}
我将永远拥有唯一的钥匙,并且只有一对 key\value。
我知道如果我在 foreach 中遍历数组,那么我只能访问项目的索引和值,例如
0: {foo: 1}
我希望能够循环,并且在访问项目时分别读取键和值,以便我可以附加到我的新对象上。
我觉得 lodash 应该可以在这里提供帮助,但我正在努力寻找他们的哪些方法可以提供帮助。
有人能指出我正确的方向吗?
谢谢
您可以迭代并使用 Object.assign
来获取具有所有属性的新对象。
var someArray = [{ foo: 1 }, { bar: 2 }],
result = someArray.reduce(function (r, a) {
return Object.assign(r, a);
}, {});
console.log(result);
这可以使用 reduce
和 Object assign
快速完成:
var someArray = [
{foo: 1},
{bar: 2}
];
var result = someArray.reduce((acc, obj) => Object.assign(acc, obj), {})
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
这里不需要 lodash,你可以只使用 Object.assign()
和传播语法。
var someArray = [
{foo: 1},
{bar: 2}
];
var obj = Object.assign({}, ...someArray)
console.log(obj)
您也可以使用 apply
而不是扩展语法
var obj = Object.assign.apply({}, someArray)
var someArray = [
{foo: 1},
{bar: 2}
];
var obj = Object.assign.apply({}, someArray)
console.log(obj)