脚本宝典收集整理的这篇文章主要介绍了数组去重(es5,es6),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
const arr = [1,2,"1",null,null,undefined,undefined,false,false,NaN,NaN];
1.0 遍历 无法判断NaN
//for循环去重,效率较高
const unique1 = (arr)=>{
const newArr = [];
let item;
for (let i = 0 , len = arr.length ; i < len; i++) {
item = arr[i];
if(newArr.indexOf(item) === -1){
newArr.push(item);
}
}
return newArr;
}
console.log('遍历:unique1',unique1(arr));//[1, 2, null, false, NaN, NaN]
//forEach 效率不如for,判断不出NaN
const unique2 = (arr)=>{
const newArr = [];
arr.forEach(item=>{
if(newArr.indexOf(item) === -1){
newArr.push(item);
}
})
return newArr;
}
console.log('遍历:unique2',unique2(arr));//[1, 2, null, false, NaN, NaN]
//reduce
const unique3 = (arr)=>{
return arr.reduce((pre,next)=>{
if(pre.indexOf(next) === -1){
pre.push(next)
};
return pre;
},[])
}
console.log('遍历:unique3',unique3(arr));// [1, 2, null, false, NaN, NaN]
//解决NaN无法排除问题
const unique1_1 = (arr)=>{
const newArr = [];
let item;
let flag = true;
for (let i = 0 , len = arr.length ; i < len; i++) {
item = arr[i];
if(newArr.indexOf(item) === -1){
if(item != item){ //排除NaN
if(flag){
newArr.push(item);
flag = false;
}
}else {
newArr.push(item);
}
}
}
return newArr;
}
console.log('解决NaN问题:unique1_1',unique1_1(arr));//[1, 2, null, false, NaN]
2.0 索引去重 把NaN直接全部去除掉了
//2.1for
const unique4 = (arr)=>{
const newArr = [];
let item;
for (let i = 0 , len = arr.length; i < len; i++) {
item = arr[i];
if(arr.indexOf(item) === i){
newArr.push(item);
}
}
return newArr;
}
console.log('索引去重:unique4',unique4(arr));//[1, 2, null, false]
//2.2filter
const unique5 = (arr)=>{
return arr.filter((item,index,arr)=>arr.indexOf(item) === index)
}
console.log('索引去重:unique4',unique5(arr));//[1, 2, null, false]
3.0集合转换 效率低,能去掉重复NaN;
//Set
const unique6 = (arr)=>{
return Array.from(new Set(arr));
}
console.log('集合转换:unique6',unique6(arr));
挂载方法到Array上
const unique = function(){
return Array.from(new Set(this));
}
Array.prototyPE.unique = unique;
const uniqueArr = arr.unique();
总结: 遍历无法判断NaN需要手动判断,for效率最高;索引去重直接把所有NaN干掉了,看情况使用;Set去重简单、能去掉NaN,但是效率最低;
以上是脚本宝典为你收集整理的数组去重(es5,es6)全部内容,希望文章能够帮你解决数组去重(es5,es6)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。