如何把数组中的重复项除去

今天刚刚好遇到一个题目,在这边总结下
总所周知在JS中没有数组操作方法中,并没有去除多余项这个方法。不过可以依靠下面这几种方法实现。因为才学JS,能力有限。暂时只实现三种方法。
以下面方法为例:
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1']重排序。

第一种方法:

用最原始的方法。遍历查找

1
2
3
4
5
6
7
8
9
10
11
12
13
var key=function(arr){
var now=[];//创建一个新数组,作为容器
for(var i=0;i<arr.length;i++){
if(now.indexOf(arr[i])===-1){
now[now.length]=arr[i];
}else{
continue;
}
}
return now;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
console.log(key(arr));


第二种方法:

对第一种方法稍加改进,不从第一个开始遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var key=function(arr){
//这次从第二个开始遍历
var now=[arr[0]];
for(var i=1;i<arr.length;i++){
if(now.indexOf(arr[i])===-1){
now.push(arr[i]);
}else{
continue;
}
}
return now;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
console.log(key(arr));

第三种方法:

可以先使用sort()排序,然后再进行比较。(速度会快很多)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var key=function(arr){
var now=[];//创建一个新的容器
arr.sort();//进行一次重排序;
for(var i=0;i<arr.length;i++){
if(arr[i]===arr[i+1]){
continue;
}else{
now.push(arr[i]);
}
}
return now;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
console.log(key(arr));

应该还有其他的内容。想到啦再补充。