JavaScript数组去重的七种方式

下面是数组去重的几种方法:

数组去重方法一:使用Set集合去重

//方法一:
function fun(arr){
    let set = new Set(arr);
    arr=Array.from(set);
    return arr;
}

数组去重方法二:新建一个数组,将没有重复的数组元素添加到新数组并返回新数组 

//方式二
    function fun(arr) {
        let arr1 = [];
        for (let i = 0; i < arr.length; i++) {
            if (arr1.indexOf(arr[i]) > -1) {
                continue;
            } else {
                arr1.push(arr[i]);
            }
        }
        return arr1;
    }

数组去重方法三:遍历数组判断并删掉重复元素 

   //方式三:
    function fun(arr){
    	for(let i = 0;i<arr.length;i++){
    		for(let j = i+1;j<arr.length;){
    			if(arr[i]==arr[j]){
    				arr.splice(j,1)
    			}else{
    				j++
    			}
    		}
    	}
    	return arr;
    }

数组去重方法四:使用数组filter方法过滤出只出现一次的数组元素 

//方法四:
    function fun(arr){
    	return arr.filter((item,index)=>arr.indexOf(item)==index);
    }

数组去重方法五:通过对比元素第一次出现的下标和最后一次出现的下标,如果下表不相等,说明重复,删掉一个,然后++

//    方法五:
    function fun(arr){
    	for(let i=0;i<arr.length;){
    		if(arr.indexOf(arr[i])!=arr.lastIndexOf(arr[i])){
    			arr.splice(i,1)
    		}else{
    			i++
    		}
    	}
    	return arr;
    }

数组去重方法六:先使用sort()方法将数组排序,然后依次比较相邻元素是否相等,如果相等则删除后面的元素

function fun(arr){
    arr.sort();
    for(let i = 0; i < arr.length-1; i++) {
      if(arr[i] === arr[i+1]) {
        arr.splice(i+1, 1);
        i--;
      }
    }
    return arr;
}

 

数组去重方法七:使用reduce()方法遍历数组,并将数组元素存入一个新数组中,如果元素已经存在于新数组中,则不再存入

function fun(arr) {
  return arr.reduce((prev, cur) => {
    if(!prev.includes(cur)) {
      prev.push(cur);
    }
    return prev;
  }, []);
}
 

扩展数组splice方法 : 

扩展数组reduce方法  :

数组的reduce()方法是一个高阶函数,用于对数组中的所有元素进行累加计算。它接收两个参数:一个回调函数和一个初始值。回调函数又包含4个参数:

  • accumulator: 累加器,它存储着上一次回调函数执行的结果(即累加值)。
  • currentValue:当前元素,即数组中当前被处理的元素。
  • currentIndex: 当前元素的索引。
  • array:当前数组。

reduce()方法对数组中的每个元素依次调用回调函数,将回调函数的返回值累加到累加器上,并返回最终的结果。

下面是reduce()方法的语法:

array.reduce(callback[, initialValue]);

其中,callback为必需,是回调函数,initialValue为可选,是初始值。

下面是一个例子,计算一个数组的所有元素的和:

let arr = [1, 2, 3, 4, 5];
let sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 15

        在上面的例子中,初始值为0,回调函数将累加器和当前元素相加,得到的结果再赋值给累加器。因此,最终的结果为15。

        需要注意的是,如果数组为空且没有提供初始值,reduce()方法会抛出TypeError异常。如果数组仅有一个元素(无论是否提供初始值),那么该元素就是返回值。如果数组为空但是提供了初始值,那么初始值就是返回值。


以上是个人整理的七种数组去重方式,如果有其他方式,欢迎大家讨论

猜你喜欢

转载自blog.csdn.net/weixin_40381947/article/details/131389669