如何在javascript中将嵌套对象转换为数组?

时间:2017-01-02 13:22:30

标签: javascript jquery arrays lodash

我有一个包含多个对象的数组。在该数组中,每个对象具有两个或更多个子对象。我想将所有子对象聚合成一个数据数组。如何使用javascript?

var array1 = [
  {
    "dfgasg24":{
      name:"a",
      id:1
    },
    "dfgare24":{
      name:"b",
      id:2
    }
  },
  {
    "wegasg24":{
      name:"ab",
      id:76
    },
    "yugasg24":{
      name:"bc",
      id:34
    },
    "yugasg26":{
      name:"dc",
      id:45
    }
  }
]

我想要的输出,

var result = [
    {
        name:"a",
        id:1
    },
    {
        name:"b",
        id:2
    },
    {
        name:"ab",
        id:76
    },
    {
        name:"bc",
        id:34
    },
    {
        name:"dc",
        id:45
    }
];

4 个答案:

答案 0 :(得分:7)

您可以使用组合方法迭代数组和关键字来构建平面数组。



var array = [{ "dfgasg24": { name: "a", id: 1 }, "dfgare24": { name: "b", id: 2 } }, { "wegasg24": { name: "ab", id: 76 }, "yugasg24": { name: "bc", id: 34 }, "yugasg26": { name: "dc", id: 45 } }],
    result = array.reduce(function (r, o) {
        Object.keys(o).forEach(function (k) {
            r.push(o[k]);
        });
        return r;
    }, []);

console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }




答案 1 :(得分:3)

使用git revert HEAD~2获取对象值

_.values

答案 2 :(得分:2)

此解决方案使用spread syntaxarrow functions(ES6)和Object.values()(ECMAScript 2017),因此如果不进行转换,它将无法在旧浏览器上运行:

const array = [{ "dfgasg24": { name: "a", id: 1 }, "dfgare24": { name: "b", id: 2 } }, { "wegasg24": { name: "ab", id: 76 }, "yugasg24": { name: "bc", id: 34 }, "yugasg26": { name: "dc", id: 45 } }];

const result = [].concat(...array.map(Object.values));

console.log(result);

如果所有对象的键都是唯一的,您还可以使用Object.assign()将所有对象组合到一个对象中,然后使用Object.values()将值提取到数组中:

const array = [{ "dfgasg24": { name: "a", id: 1 }, "dfgare24": { name: "b", id: 2 } }, { "wegasg24": { name: "ab", id: 76 }, "yugasg24": { name: "bc", id: 34 }, "yugasg26": { name: "dc", id: 45 } }];

const result = Object.values(Object.assign({}, ...array));

console.log(result);

答案 3 :(得分:0)

answer=[];
for(elem of array){
var arr=[];
 for(obj of elem){
   arr.push(obj);
 }
answer.push(arr);
}
alert(answer);

循环通过主阵列,并用数组替换每个元素。