[英]How do I convert array of Objects to one Object in JavaScript?
我有一个对象数组:
[
{ key : 'a', value1 : 'a1', value2 : 'a2' },
{ key : 'b', value1 : 'b1', value2 : 'b2' }
];
如何将其转换为以下内容?
如果能用 lodash 实现这一点就太好了。
{
a: { value1: 'a1', value2 : 'a2' }
b: { value1: 'b1', value2 : 'b2' }
}
您可以使用Array.reduce
function:
const res = arr.reduce((acc, o) => {
const {key, ...newO} = o;
return {...acc, [o.key]: newO};
},
{},
);
您可以解构 object 和 map 新对象。 最后将散布对象分配给单个object。
const array = [{ key: 'a', value1: 'a1', value2: 'a2' }, { key: 'b', value1: 'b1', value2: 'b2' }], result = Object.assign({}, ...array.map(({ key, ...o }) => ({ [key]: o }))); console.log(result);
.as-console-wrapper { max-height: 100%;important: top; 0; }
Map 对象数组到 [key, rest] 数组,其中 rest 是没有键的原始 object,并使用Object.fromEntries()
或 lodash 的_.fromPairs()
转换为 object。
const array = [{ key: 'a', value1: 'a1', value2: 'a2' }, { key: 'b', value1: 'b1', value2: 'b2' }] const result = Object.fromEntries(array.map(({ key, ...rest }) => [key, rest])); console.log(result);
.as-console-wrapper { max-height: 100%;important: top; 0; }
这样的事情会起作用:
const output = {};
[
{ key : 'a', value1 : 'a1', value2 : 'a2' },
{ key : 'b', value1 : 'b1', value2 : 'b2' }
].forEach(row => output[row.key] = { value1: row.value1, value2: row.value2 });
你可以通过 LODASH 实现它
const res = _.chain(array).keyBy('key').mapValues( v => _.omit(v, 'key')).value()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.