数组去重方法:filter,reduce

技术博客 (48) 2024-01-03 18:01:01

filter、reduce实现数组去重。

filter实现数组去重代码

/**
 * filter
 */

let ar = [1, 2, 2, 3, 4, 4, 5]

let unique_ar = ar.filter((x, index) => {
    // if(ar.indexOf(x)===index){
    //     return true
    // }else{
    //     return false
    // }
    return ar.indexOf(x) === index
})

console.log(unique_ar)

reduce实现数组去重代码

/**
 * reduce
 */

let ar = [1, 2, 2, 3, 4, 4, 5]
let mySum=ar.reduce((newArr,value)=>{
    console.log('item',value,newArr.indexOf(value))
    newArr&&newArr.indexOf(value)>0?null:newArr.push(value);
    console.log('newArr',newArr)
    return newArr;
},[])
console.log('reduce去重后',mySum)

数组去重方法:filter,reduce (https://mushiming.com/) 技术博客 第1张 

重点思考:

各自的实现思想是什么?

filter的去重方法:利用了过滤方法——filter,遍历调用它的这个数组,并且不改变原数组。巧妙地通过filter函数,每次遍历数组元素都会有一个返回值的“true”或“false”的特性,简洁的实现去重,最终得到一个新的数组。

reduce的去重方法:利用了reduce自动求和方法,可以设置一个和的初始值,来存最后去重后的数组。主要是判断当前被遍历的元素是否存在于newArr中,有的话,不做任何操作,没有的话,就把它放进去,最后返回出一个去重后的结果数组。同样,这个方法也是没有改变原来的数组。

 

 

THE END

发表回复