数组去重的算法
2013年10月26日
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的二次方,如果数据相对较少那还可以忽略执行时间,但是数据一旦非常大,显然执行效率是非常差的,于是想到了另外一种解决思路,改进代码如下: