簡體   English   中英

JavaScript-如何將所有嵌套數組中的所有對象放入唯一對象的新數組中

[英]JavaScript - How to put all of the objects from several nested arrays into a new array of unique objects

我有一個稱為packages的對象數組。 每個對象都有一個稱為modules的屬性,該屬性是另一個對象數組。 每個modules陣列中的每個對象都有一個唯一的ID。 我想使用ID將所有modules數組中的每個唯一對象放入單個數組中。

packages = [
  { id: 1, modules:[{ id: 1, name: 'module1' }, { id: 2, name: 'module2' }]},
  { id: 2, modules:[{ id: 1, name: 'module1' }, { id: 3, name: 'module3' }]},
  { id: 3, modules:[{ id: 2, name: 'module2' }, { id: 4, name: 'module4' }]} 
];

我需要的結果是:

allModules = [
  { id: 1, name: 'module1' },
  { id: 2, name: 'module2' },
  { id: 3, name: 'module3' },
  { id: 4, name: 'module4' }
];

我正在使用TypeScript,但沒有使用ES6。

您可以使用諸如reducefilter類的Array方法來獲取唯一模塊的列表:

 var packages = [ { id: 1, modules:[{ id: 1, name: 'module1' }, { id: 2, name: 'module2' }]}, { id: 2, modules:[{ id: 1, name: 'module1' }, { id: 3, name: 'module3' }]}, { id: 3, modules:[{ id: 2, name: 'module2' }, { id: 4, name: 'module4' }]} ] var result = packages.reduce(function (a, e) { return a.concat(e.modules) }, []).filter(function (e) { return !this[e.id] && (this[e.id] = true) }, {}) console.log(result) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM