数组权重删除方法
四种算法用于实现这一目标:第一:
(array.prototype.unique1 =功能){
新的临时数组
对于(var i = 0;i < this.length; / /我+ +)当前数组的遍历
{
如果当前数组已保存到临时数组中,则跳过,
否则将推送到临时数组中。
如果(n.indexof(这{我})= 1(这n.push {我}));
}
返回N;
}
第二种:
array.prototype.unique2 =功能()
{
用于临时数组的var、{ = }、r = {、}、n、n、r
对于(var i = 0;i < this.length; / /我+ +)当前数组的遍历
{
如果({这个{ } }!)如果哈希表中没有当前项
{
在哈希表中,这个{ } = true;
R.push(本{我}); / /投入临时阵列电流推力电流阵列
}
}
返回R;
建议使用此方法,但不考虑222和222问题。
第二改进版本:
哈希方法的改进版本
(array.prototype.unique2 =功能){
var,{,};
对于(var i = 0;i < this.length;i++){
如果(!n { typeof(这{ } { } })+这我){
n { typeof(这{ } { } })+我=真本;
R.push(本{我})
}
}
返回R
};
var arr = { 222
无功newarry = arr.unique2();
console.log(newarry { newarry。length-1 });
第三种:
array.prototype.unique3 =功能()
{
{此{ 0 } };数组结果
对于(var i = 1;i < this.length; / /我+ +)从第二导线
{
如果我第一次出现在数组中当前位置的当前数组不是i,
因此,重复i,忽略,否则,保存结果数组。
如果(this.indexof(这{我})=我n.push(这{我}));
}
返回N;
}
这些第一和第三是用数组中的索引的方法。这种方法的目的是在阵列的输入参数的第一次出现的位置。很显然,JS引擎遍历数组直到目标被发现时,它的实现。所以这个功能会浪费很多时间和方法2用在哈希表中。放在下标的形式已经存在为对象的下标引用数组的索引比搜索要快得多。
为了确定这三种方法的效率,我做了一个测试程序生成10000个随机数的数组的长度,然后用几种方法测试的执行时间。结果表明,二方法比其他两种方法快得多。但应该超过内存占用二方法,因为有一个哈希表,这是所谓的空间时间。这是测试页面,你可以去看看。
第四方法:
array.prototype.unique4 =功能()
{
This.sort();
var {此{ 0 } };
对于(var i = 1;i < this.length;i++)
{
如果({ { })!=重新{重新length-1 })。
{
Re.push(本{我});
}
}
重新回归;
}
该方法的基本思想是对数组的排序第一和比较相邻的两值。JS机排序方法排序时,JS引擎应使用快速排序,最后的测试结果,该方法的平均运行时间约为三倍,第二方法,但它比第一和第三快多了。
以上是本文的全部内容,希望大家能喜欢。