[英]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.