一般来说是建立一个哈希表,类似这样
var arr = [1, 2, 2, 3, 4, 5, 6, 6];
function getArray(a) {
var hash = {},
len = a.length,
result = [];
for (var i = 0; i < len; i++){
if (!hash[a[i]]){
hash[a[i]] = true;
result.push(a[i]);
}
}
return result;
}
getArray(arr); // 输出[1, 2, 3, 4, 5, 6]
里面有对对象属性的查询,这个性能肯定不是最好的,所以问对js来说是否还有更加高效?
我对4种库进行了测试:
测试环境是Linux Sandybridge i5 x86-64下的chrome 26(下称v8)和firefox 20(下称ionmonkey)
测试数据有3种:
实验数据:
v8/
mkArr(3000, 3000)
v8/
mkMixedArr(3000, 3000)
v8/
mkObjArr(10000, 10000)
ionmonkey/
mkArr(3000, 3000)
ionmonkey/
mkMixedArr(3000, 3000)
ionmonkey/
mkObjArr(10000, 10000)
结论:
测试的不足