1

オブジェクトの配列から重複を削除するための最良の方法は何ですか?

var array = [
  {a: 0, b: 0, c: 0},
  {a: 0, b: 0, c: 0},

  {a: 1, b: 1, c: 1},
  {a: 1, b: 1, c: 1},

   //..... etc
];

そして、私は次のようになりたいです:

[
  {a: 0, b: 0, c: 0},
  {a: 1, b: 1, c: 1}
];

PS:キー(a、b、c)にはプリミティブデータ型(文字列、数値)のみがあります

underscore.jsやその他のライブラリなしでお願いします。

4

1 に答える 1

2

これを行うにはもっと良い方法があると確信していますが、このプロトタイプ関数を使用できます。

Array.prototype.removeDuplicates = function () {
    var r = new Array();
    o:for(var i = 0, n = this.length; i < n; i++)
    {
        for(var x = 0, y = r.length; x < y; x++)
            if(r[x].a==this[i].a && r[x].b==this[i].b && r[x].c==this[i].c)
                continue o;
        r.push(this[i]);
    }
    return r;
}

それの使い方

var arr = [
  {a: 0, b: 0, c: 0},
  {a: 0, b: 0, c: 0},
  {a: 1, b: 1, c: 1},
  {a: 1, b: 1, c: 1},

   //..... etc
];
var uniques = arr.removeDuplicates();
console.log(uniques);

ノート:

大きなアレイではこれを避ける必要があります。より良い解決策があります。

于 2013-01-31T21:04:39.097 に答える