我有一个内部对象的3D阵列:
[
[{ id: 1 }, { id: 2 }],
[{ id: 3 }],
[{ id: 3 }, { id: 4 }]
]
如何使其变平,包括删除重复的
id
参数?[{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }]
我认为下划线会对此有所帮助
最佳答案
您可以使用下划线flatten和unique完成此操作。但是,无论何时使用多个下划线操作,都是时候考虑将underscore chainging与chain
和value
一起使用的好时机:
var data = [
[{ id: 1 }, { id: 2 }],
[{ id: 3 }],
[{ id: 3 }, { id: 4 }]
];
var result = _.chain(data)
.flatten()
.uniq(function(o) {
return o.id;
})
.value();
console.log('result', result);
JSFiddle:http://jsfiddle.net/0udLde0s/3/
使用当前的Underscore.js甚至更短
如果您使用的是Underscore.js的最新版本(我现在尝试的当前版本是1.8.3),则可以使用
.uniq('id')
,这样它甚至更短:var result = _.chain(data)
.flatten()
.uniq('id')
.value();