法一:利用indexOf的方法
代码如下:
indexOf(要查找的值,开始查找的位置)
思想:从数组第一个开始循环,如果此时循环的位置A(i)能与 用indexOf查找到的i位置的对应的值 的位置B相同则,说明i位置上的值在i位置之前是唯一的。(好生拗口)
var arr = [3,4,5,12,0,0,7,45,9,0,3];
var brr = [],
j = 0;
for(var i=0;i<arr.length;i++){
if(i === arr.indexOf(arr[i],0)){
/* brr[j]=arr[i];
j++;
这样也可以*/
brr.push(arr[i]);
}
}
console.log("应用indexOf方法去重:",brr);
法二:双层for循环,加splice
思想:去重用splice,但是需要双层for循环,内层for循环执行删除重复项的工作。
splice(要删除第一项的位置,要删除的个数,要在这个位置添加插入的任意数量的值)
for(i=0;i<arr.length;i++){
for(j=i+1;j<arr.length;j++){
if(arr[j]===arr[i]){
arr.splice(j,1);
}
}
}
console.log("应用splice方法去重:",arr);
法三:先排序,比较相邻的位置的值
先排序,再比较相邻的数值
arr.sort(function(v2,v1) {
return v2-v1;
});
var crr = [];
for(i=0;i<arr.length;i++){
if(arr[i]!=arr[i+1]){
crr.push(arr[i]);
}
}
console.log("应用排序方法去重:",crr);
法四:set方法
var arr2 = new Set(arr);
set方法得到的arr2是对象的形式
再将对象转化为数组:
转为数组法一:
console.log(Array.from(arr2));
转为数组二:
console.log([...arr2]);
转为数组法三:
var arr3 = [];
//for of 循环:
for(var x of arr2){
console.log(x);
arr3.push(x);
}
console.log(arr3);
ps:听说还有好多好多方法,明天再来,