我有一个内部对象的3D阵列:

[
    [{ id: 1 }, { id: 2 }],
    [{ id: 3 }],
    [{ id: 3 }, { id: 4 }]
]

如何使其变平,包括删除重复的id参数?
[{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }]

我认为下划线会对此有所帮助

最佳答案

您可以使用下划线flattenunique完成此操作。但是,无论何时使用多个下划线操作,都是时候考虑将underscore chaingingchainvalue一起使用的好时机:

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();

07-24 17:34
查看更多