2017-01-02 123 views
1

我有一個數組與多個對象。在這個數組中,每個對象都有兩個或多個子對象。我想將所有的子對象聚合到一個數據數組中。如何處理JavaScript?如何將嵌套對象轉換爲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 
    } 
]; 

回答

6

你可以使用與迭代相結合的辦法在陣列和在建設一個平板陣列的關鍵。

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; }

+0

非常感謝@nina ... – Sathya

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

環槽的主陣列,和替換以與陣列的每個ELEM。

2

使用_.values獲取對象的值

var res = _.flatMap(array1, _.values) 
0

該解決方案使用spread syntaxarrow functions(ES6),及Object.values()(ECMAScript的2017年草案),所以它不會在舊版瀏覽器不工作transpiling:

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((obj) => Object.values(obj))); 
 

 
console.log(result);

相關問題