1

我试图在一个数组中找到相同的对象,以便在 UI 中标记它们。我似乎无法使用 undescore 来做到这一点。

我正在这样做:

var a = [ {'id': 1, 'name': 'jake' }, {'id':4, 'name': 'jenny'},  {'id': 9, 'name': 'nick'}, {'id': 1, 'name': 'jake' } ];
var eaches = _.each(a, function (obj) {
  _.find(a, function () {
    return _.isEqual(a, obj);
  });
});

提前致谢!

4

1 回答 1

1

似乎你需要这样的东西:

var a = [{
    'id': 1,
    'name': 'jake'
}, {
    'id': 4,
    'name': 'jenny'
}, {
    'id': 9,
    'name': 'nick'
}, {
    'id': 1,
    'name': 'jake'
}];

var eq = [];

_.each(a, function (x, i) {
    var e = _.find(a, function (y, j) {
        return i !== j && _.isEqual(x, y);
    });
    if (e) {
        eq.push(x);
    }
});

console.log(eq);

http://jsfiddle.net/f0t0n/WBbs5/


更新:
自定义“ _.uniq”基于_.isEqual而不是===严格比较:

var uniqEq = _.reject(eq, function(x, i) {
    return _.find(eq, function(y, j) {
        return i < j && _.isEqual(x, y);
    });
});

http://jsfiddle.net/f0t0n/hzBBA/

于 2013-04-05T22:08:56.493 回答