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的去重方法:利用了过滤方法——filter,遍历调用它的这个数组,并且不改变原数组。巧妙地通过filter函数,每次遍历数组元素都会有一个返回值的“true”或“false”的特性,简洁的实现去重,最终得到一个新的数组。
reduce的去重方法:利用了reduce自动求和方法,可以设置一个和的初始值,来存最后去重后的数组。主要是判断当前被遍历的元素是否存在于newArr中,有的话,不做任何操作,没有的话,就把它放进去,最后返回出一个去重后的结果数组。同样,这个方法也是没有改变原来的数组。
下一篇