繁体   English   中英

如何将对象数组转换为 JavaScript 中的一个 Object?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM