数组去重方法+

1 利用ES6 Set去重(ES6中最常用) 如果不考虑兼容性,这种去重的方法代码最少。这种方法还无法去掉“{}”空对象,后面的高阶方法会添加去掉重复“{}”的方法。

function unique(arr){

  return Array.from(new Set(arr))

}

var arr = [1,2,2,null,undefined,true,false,true,4,7,48,80,{},{}]

2. 利用hasOwnProperty 判断是否存在对象属性

function unique(arr) {

var obj = {};

return arr.filter(function(item , index, arr){

return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true )

})

}

3. 双重for循环 利用for嵌套for,然后splice去重(ES5中最常用)

function unique(arr) {

for (var i=0; i < arr.length; i++) {

for (var j=i+1; j < arr.length; j++) {

if (arr[i] == arr[j]) {

arr.splice(j, 1);

j--;

}

}

};

return arr;

}

4.利用indexOf去重 新建一个空的结果数组,for 循环原数组,判断结果数组是否存在当前元素,如果有相同的值则跳过,不相同则push进数组。

function unique(arr) {

if (!Array.isArray(arr)) {

console.log("type error");

return

}

var array = [];

for (var i = 0; i < arr.length; i++) {

console.log(array.indexOf(arr[i]))

if (array.indexOf(arr[i]) === -1) {

array.push(arr[i]);

}

}

return array;

}

5. 利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对

function unique(arr) {

if (!Array.isArray(arr)) {

console.log("type error");

return

}

            arr = arr.sort();

var array = [arr[0]];

for(var i = 1;i

if(arr[i]!=arr[i-1]){

array.push(arr[i])

}

}

return array;

}

6.利用对象的属性不能相同的特点进行去重

function unique(arr) {

if (!Array.isArray(arr)) {

console.log("type error");

return

}

var array = [];

var obj = {};

for(var i = 0;i

if(!obj[arr[i]]){

array.push(arr[i]);

obj[arr[i]] =1 ;

}else{

obj[arr[i]] ++

}

}

return array;

}

var arr = [1, 2, 2, null, undefined, true, false, true, 4, 7, 48, 80, NaN, NaN, "jj", "jj", {}, {}]

console.log(unique(arr))

你可能感兴趣的:(数组去重方法+)