【数组和对象的遍历方法】

数组和对象的遍历方法

数组的遍历方法(forEach、map、reduce、filter)

方法描述语法返回新数组参数函数需要return
forEacharr.forEach(function(item,index,arr){})不返回数组不需要
map遍历数组并返回新数组arr.map(function(item,index,arr){},参数1的this指向)返回新数组需要返回新数组的每一项
reduce对数组进行条件统计arr.reduce(function(上一轮的累加值,item,index,arr){},初始值)不改变数组,返回统计的结果返回每一项的统计值
filter对数组中元素进行条件筛选,过滤掉不符合条件的项arr.filter(function(item,index,arr){})返回新数组返回条件项
some只要数组中某项符合条件就返回truearr.filter(function(item,index,arr){})返回布尔值返回条件项
every数组中每一项都符合条件才返回truearr.filter(function(item,index,arr){})返回布尔值返回条件项

对象的遍历方法

引用

手写数组去重

用reduce实现数组去重
let arr = [1,3,2,5,1,7,4,5]
let res= arr.reduce((prearr,item)=>{
    return prearr.includes(item)?prearr:prearr.concat(item)
},[])

手写数组扁平化

// reduce实现数组扁平化

let arr = [1,[3,2],5,[1,7,4],5]
function flat(arr){
    let res= arr.reduce((prearr,item)=>{
        return prearr.concat(Array.isArray(item)?flat(item):item)
    },[])
    return res;
}

console.log(flat(arr));
let arr = [1,[3,2],5,[1,7,4],5]
function flat(arr){
    let res =[]
    arr.forEach(item=>{
        if(Array.isArray(item)){
            res= res.concat(flat(item))
        }else{
            res = res.concat(item)
        }
    })
    return res
}

用reduce实现map和filter

// 用reduce实现map
Array.prototype.map = function(fn,thisArg){
    return this.reduce((pre,cur,index,arr)=>{
        return pre.concat(fn.call(thisArg,cur,index,arr))
    },[])
}
Array.prototype.filter = function(fn,thisArg){
    return this.reduce((pre,cur,index,arr)=>{
        return pre.concat(fn.call(thisArg,cur,index,arr))
    },[])
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值