2017-01-02 12 views
1

私は複数のオブジェクトを持つ配列を持っています。この配列において、各オブジェクトは2つ以上のサブオブジェクトを有する。私はすべてのサブオブジェクトをまとめてデータの配列にしたいと思います。 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を置き換えます。それはtranspilingせずに古いブラウザでは動作しませんように、オブジェクトを取得するための

2

使用_.valuesは、

var res = _.flatMap(array1, _.values) 
0
このソリューションは spread syntaxを使用し

、およびarrow 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((obj) => Object.values(obj))); 
 

 
console.log(result);

関連する問題