快捷搜索:  汽车  科技

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)不考虑兼容性,这种去重的方法代码最少。这种方法还无法去掉“{}”空对象,后面的高阶方法会添加去掉“{}”空对象。 //[1 "true" true 15 false undefined null NaN "NaN" 0 "a" {} {}] var arr = [1 1 'true' 'true' true true 15 15 false false undefined undefined null null NaN NaN 'NaN' 0 0 'a' 'a' {} {}]; console.log(unique(arr))

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)(1)

一、利用ES6 Set去重(ES6中最常用)

function unique (arr){

return Array.from(new Set(arr))

}

var arr = [1 1 'true' 'true' true true 15 15 false false undefined undefined

null null NaN NaN 'NaN' 0 0 'a' 'a' {} {}];

console.log(unique(arr))

//[1 "true" true 15 false undefined null NaN "NaN" 0 "a" {} {}]

不考虑兼容性,这种去重的方法代码最少。这种方法还无法去掉“{}”空对象,后面的高阶方法会添加去掉“{}”空对象。

二、利用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]){ //第一个等同于第二个,splice方法删除第二个

arr.splice(j 1);

j--;

}

}

}

return arr;

}

var arr = [1 1 'true' 'true' true true 15 15 false false undefined undefined null null NaN NaN'NaN' 0 0 'a' 'a' {} {}];

console.log(unique(arr))

//[1 "true" 15 false undefined NaN NaN "NaN" "a" {…} {…}]

双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值

三、利用indexOf去重

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)(2)

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

四、利用sort()

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)(3)

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

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

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)(4)

六、利用includes

function unique(arr) {

var obj = {};

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

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

})

}

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

八、利用filter

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)(5)

九、利用递归去重

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)(6)

十、利用Map数据结构去重

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)(7)

创建一个空Map数据结构,遍历需要去重的数组,把数组的每一个元素作为key存到Map中。由于Map中不会出现相同的key值,所以最终得到的就是去重后的结果。

十一、利用reduce

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)(8)

十二、[...new Set(arr)]

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)(9)

前端实战总结JavaScript数组去重(前端实战总结JavaScript数组去重)(10)

有问题可以私信小编:web

猜您喜欢: