从对象数组中删除重复项的最佳方法是什么?
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)只有原始数据类型(String,Number)
请不要使用underscore.js和其他库。
答案 0 :(得分: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);
对于大型阵列,你应该避免这种情况,有更好的解决方案