繁体   English   中英

将一组对象组合成一个 OBJECT

[英]Combine an array of objects into one OBJECT

我正在努力寻找一种将一组对象组合成一个对象的方法。 到目前为止,我遇到的所有解决方案都会产生一个数组,但我需要一个对象。 这是一个例子:

 [
    {
        '1112225544': '1',
        '3258458756': '9',
        '3654125412': '5',
    },
    {
        '2229993827': '0',
        '9827719902': '1',
        '0000000000': '2',
        '1112225544': '3',
    },
    ...
 ]

数组内可以有很多对象。 我想将它们展平并将其作为输出:

{
    '3258458756': '9',
    '3654125412': '5',
    '2229993827': '0',
    '9827719902': '1',
    '0000000000': '2',
    '1112225544': '3'
}

请注意,重复键会被最后一个数组具有的任何值覆盖。 到目前为止,我看到的解决方案种类繁多,对我来说不太适用。

 let data = [ { '1112225544': '1', '3258458756': '9', '3654125412': '5', }, { '2229993827': '0', '9827719902': '1', '0000000000': '2', '1112225544': '3', }, ]; let result = {}; data.forEach(x=>{ Object.entries(x).forEach(([k,v])=>result[k]=v) }) console.log(result)

或者

 let data = [ { '1112225544': '1', '3258458756': '9', '3654125412': '5', }, { '2229993827': '0', '9827719902': '1', '0000000000': '2', '1112225544': '3', }, ]; let result = {}; data.forEach(x=>{ result = {...result, ...x} }) console.log(result)

这是使用Array.prototype.reduce的方法:

  [
    {
      '1112225544': '1',
      '3258458756': '9',
      '3654125412': '5',
    },
    {
      '2229993827': '0',
      '9827719902': '1',
      '0000000000': '2',
      '1112225544': '3',
    },
  ].reduce(
    (acc, curr) => ({
      ...curr,
      ...acc,
    }),
    {}
  );

每当我需要将数组“减少”为缩放器或对象类型时,通常会考虑reduce

这边走 ?

 const arr1 = [ { '1112225544': '1' , '3258458756': '9' , '3654125412': '5' } , { '2229993827': '0' , '9827719902': '1' , '0000000000': '2' , '1112225544': '3' } //... ] const arr2 = arr1.reduce((r,c)=> { Object.entries(c).forEach(([k,v]) => r[k] = v ) return r },{}) console.log( arr2 )
 .as-console-wrapper { max-height: 100% !important; top: 0 }

或旧方式:

 let items = [ { '1112225544': '1', '3258458756': '9', '3654125412': '5', }, { '2229993827': '0', '9827719902': '1', '0000000000': '2', '1112225544': '3', }, ]; let result = {}; for (let item of items) result = Object.assign(result, item) console.log(result)

这可以通过一个命令来实现。 使用Object.assign并在其中传播数组。

Object.assign({}, ...[
  {
      '1112225544': '1',
      '3258458756': '9',
      '3654125412': '5',
  },
  {
      '2229993827': '0',
      '9827719902': '1',
      '0000000000': '2',
      '1112225544': '3',
  },
])

 let arr = [{1112225544:"1",3258458756:"9",3654125412:"5"},{2229993827:"0",9827719902:"1","0000000000":"2",1112225544:"3"}]; let result = Object.fromEntries(arr.flatMap(e => Object.entries(e))) console.log(result)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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