2017-07-12 45 views
2

可以說我有一個對象:聯盟數組對象屬性

let obj={ 
     hash1:{ 
      images:[img1,img2....] 
     } 
     hash2:{ 
      images:[img100,img200....] 
     } 
     hash3:{ 
      images:[img1000,img2000....] 
     } 
     ...  
} 

我想聯盟所有這些陣列在一個陣列中。 我明白,我可以使用下面的代碼:

let unionArray=[]; 

Object.values(obj).forEach((item)=>{ 
unionArray=unionArray.concat(item.images) 
}); 

是否有更優雅的方式做這樣的任務e.g一些框架或一個線路編碼。

回答

4

數組減少會做漂亮很好的位置:

let union = Object.values(obj).reduce((c, i) => c.concat(i.images), []); 
0

您可以在Object.keys()使用map()和ES6傳播語法。

let obj = {"hash1":{"images":["img1","img2"]},"hash2":{"images":["img100","img200"]},"hash3":{"images":["img1000","img2000"]}} 
 

 
var arr = [].concat(...Object.keys(obj).map(e => obj[e].images)); 
 
console.log(arr)

0

要麼使用Array#map

const union = [].concat(...Object.values(obj).map(v => v.images));