[英]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。
您可以使用諸如reduce
和filter
類的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.