Q:有一数组如下:

arr[
{
ID:123,
name:"jackket"
},
{
ID:132,
name:"jacket"
},
{
ID:123,
name:"tom"
}
]

,用一算法去除ID同样的元素,保留其中一个,输出最后的数组。

function removeSameID(obj){
var _arr = [];
_arr.push(obj[0]);
for(var i=0;i < obj.length;i++){
var _num = 0;
for(var j=0;j < _arr.length;j++){
if(obj[i].ID != _arr[j].ID){
_num ++;
}
if(_num == _arr.length){
_arr.push(obj[i]);
}
}
}
return _arr;
}

注:上面用到了underscore.js插件。

不过,上面算法复杂度是N的二次方,如果数据相对较少那还可以忽略执行时间,但是数据一旦非常大,显然执行效率是非常差的,于是想到了另外一种解决思路,改进代码如下: