Javascript数组权重删除的3种方法和代码实例

有很多方法来衡量数组,这是理想的,我不知道。因此我测试了下数组的效果和性能。测试十万数据,代码,花费时间如下。

根据实际情况采用什么样的方法。


方法:1‘ / *,会被认为是相同的;所有的hash对象,如:{ 1 },{ x;y:1 }是一样的 / / 10ms。
数组。唯一的=函数(){
var newarr = { },obj = { };
对于(var i = 0,len = this.length;我< len;i++){
如果(!obj { {我} }){
NewArr.push(本{我});
obj { {我} } =真;
}
}
返回newarr;
}

方法: / *改进版的所有哈希对象,如:{ 1 },{ x;y:1 }是一样的 / / / 30ms *
数组。唯一的=函数(){
var newarr = { },obj = { };
对于(var i = 0,len = this.length;我< len;i++){
如果(!obj { typeof(这{ } { } })+这我){
NewArr.push(本{我});
obj { typeof(这{ } { } })+这我=这{我};
}
}
返回newarr;
}

二:重量/结果的最好方法,但消耗性能 / / / 250ms *
数组。唯一的=函数(){
var newarr = this.concat();
对于(var i = 0,len = newarr.length;我< len;i++){
对于(var j = i + 1,len = newarr.length;J < len;j++){

如果(newarr {我} = = = newarr { J }){
newarr.splice(J,1);
J;
}
}
}
返回newarr;
}

方法:三 / *不能去哈希对象 / / / 25ms *
array.prototype.unique =函数(){
var newarr = {}; / /一个新的临时数组
对于(var i = 0,len = this.length;我< len;i++){
如果(newarr.indexof(这{我})= = 1){ / /如果数组我一直保存到一个临时数组,然后跳过,否则推到一个临时数组。
NewArr.push(本{我});
}
}
返回newarr;
}


无功arr0 = { 11,21221,13,24,134 小u9119sdf u7684 u62112 DF UI块

*十万个随机数据。
var arr = { },努姆;
对于(var i = 0;i < 100000;i + +){
Num = math.floor(Math.random)*(50);
Arr.push(arr0 {数量});
}


VaR T1 =新(日期)(的时间);console.log(T1); / /开始时间

(arr.unique); / /

VaR T2 =新的日期(的时间)(控制台日志);(T2); / /结束时间

console.log(T2-T1);