作者:天若无雨666 | 来源:互联网 | 2023-06-21 09:42
1 .遍历排列法
这是最简单的数组重建方法(索引关闭方法)
实现想法:创建新数组,遍历重数组,并在值不在新数组中时(索引为-1)将其添加到新数组中
vararr=[ 2,8,5,0,5,2,6,7,2 ];
功能单元1 (arr ) {
var hash=[];
for(varI=0; i arr.length; I ) {
if(hash.indexof(ARR[I] )==-1 ) {
hash.push(ARR[I];
}
}
返回散列;
}
2 .排列下标判定法
调用indexOf方法时,性能与方法1相同
实现思路:如果当前数组的第I项在当前数组中第一个出现的位置不是I,则第I项表示重复,忽略。 否则将其存储在结果数组中。
功能unique2(arr ) {
var hash=[];
for(varI=0; i arr.length; I ) {
if(arr.indexof(arr[I] )==i ) {
hash.push(ARR[I];
}
}
返回散列;
}
3 .排序后的相邻消除法
实现思路:如果对传递的数组进行排序,则在排序后相同的值会相邻。 然后,在遍历排序后的数组时,新数组仅添加与前一个值不重复的值。
功能单元3 (arr ) {
arr.sort (;
var hash=[arr[0]];
for(varI=1; i arr.length; I ) {
if(ARR[I]!=hash[hash.length-1]
hash.push(ARR[I];
}
}
返回散列;
}
4 .扫描排列法的优化(推荐) ) ) ) ) ) ) )。
实现思路:双循环、外循环由0到arr.length,内循环由i 1到arr.length
将不重复的右侧值放入新数组中。 (如果检测到重复值,则结束当前循环,进入外层循环的下一个判定) ) ) ) ) )。
功能unique4(arr ) {
var hash=[];
for(varI=0; i arr.length; I ) {
for(varj=I1; j arr.length; j ) {
if(arr[I]===arr[j] ) {
I;
}
}
hash.push(ARR[I];
}
返回散列;
}
5 .实现es6
基本思路: ES6提供新的数据结构集。 与数组类似,但成员的所有值都是唯一的,没有重复的值。
Set函数可以接受数组(或对象,如数组)作为参数进行初始化。
功能unique5(arr ) {
varx=newset(arr );
return [.x];
}
扩展:如果重复,则删除元素
数组的下标太重了
功能unique 22 (arr ) {
var hash=[];
for(varI=0; i arr.length; I ) {
if (arr.index of (arr [ I ]==arr.lastindexof (arr [ I ] ) ) )
hash.push(ARR[I];
}
}
返回散列;
}