如何将对象数组更改为简单对象

时间:2020-03-24 13:28:46

标签: javascript

我有下表:

     [
      {
         "fr": {
           "strenghts": [
            {
            "icon": "fa-briefcase",
            "title": "Marketing"
            }             
        ]
      }
     },
     {
      en: {
        strenghts: [
          {
            icon: 'fa-briefcase',
            title: 'Marketing'                 
          }
        ]
      }
    }
 ]

,我想将其转换为这样的简单对象:

var test = {
      "fr": {
        "strenghts": [
          {
            "icon": "fa-briefcase",
            "title": "Marketing"
          }             
        ]
      }
     },
     {
      "en": {
        "strenghts": [
          {
            "icon": "fa-briefcase",
            "title": "Marketing"                
           }              
        ]
      }
    }

如果您有可以帮助我的解决方案?将我的对象数组转换为简单对象

3 个答案:

答案 0 :(得分:3)

通过使用以下代码,您可以获得预期的输出。

let array = [
{
   "fr": {
     "strenghts": [{
        "icon": "fa-briefcase",
        "title": "Marketing"
      }]
    }
},
{
   en: {
    strenghts: [{
        icon: 'fa-briefcase',
        title: 'Marketing'                 
     }]
    }
  }
]

const arrayToObject = (array) =>
   array.reduce((obj, item) => {
      let key = Object.keys(item);
      obj[key[0]] = item[key[0]];
      return obj
}, {})

const object = arrayToObject(array)
console.log(object);

答案 1 :(得分:1)

queryResult.on

您最终希望将列出的数组中的所有对象合并为一个对象。您可以点击以下链接查看堆栈溢出的解决方案

请参见MDN docs for reduce for more information.

答案 2 :(得分:0)

如果您对reduce语义和函数编程感到困惑,则可以使用此替代解决方案。请注意,这仅适用于您的格式,即,如果嵌套到数组中的对象具有多个键,则该键不起作用

var list = [{
    "fr": {
      "strenghts": [{
        "icon": "fa-briefcase",
        "title": "Marketing"
      }]
    }
  },
  {
    en: {
      strenghts: [{
        icon: 'fa-briefcase',
        title: 'Marketing'
      }]
    }
  }
]

var test = {};
for(let obj of list)
{
   let key = Object.keys(obj);
   test[key] = obj[key];
}

console.log(test);