手写forEach/ 数组常用的处理方法 map filter reduce every some

Array.prototype.toforEach = function(data) {
      console.log('data====', data) 
// data 就是调用这个函数传入的参数,此时是一个回调函数; 回调函数不会立马被指向,调用的时候才会执行,如果有形参,如果传对应的实参
      console.log('this====', this) 
// 根据普通函数this指向 谁调用指向谁 所以这个this 指向的是 this.basicList
      let array = this 
      for (let index = 0; index < array.length; index++) {
        const element = array[index];
        console.log('element====', element)
        data(element, index) 

      }
    }
    this.basicList.toforEach((element, index) => {
      console.log('basicListbasicList====', element, index) // 此时可以获取到值了 
    })

设置到Array 该构造函数的原型上 ,它的实例对象都可以调用该方法

 map : 可以映射返回新的数组

let mapArray= [1,2,3]

     let mapNewArray =  mapArray.map((element, index) => {
      return element * 4
    })
    console.log(mapNewArray)
eruda.js:23 (3) [4, 8, 12]

filter: 过滤返回一个新的数组

let filterMap = [1,2,3]

     let filterNewArray =  filterMap.filter((element, index) => {
      return element > 1
    })
    console.log(filterNewArray)
eruda.js:23 (2) [2, 3]

reduce: 可以进行相加操作等等, 返回一个值; 

 let reduceMap = [1,2,3]
   let va =  reduceMap.reduce((pre, cur, index, array) => {
      console.log('pre====', pre) 
// pre 第一次是默认的值, 后面都是函数中return的值; cur 当前循环的元素值; array 当前循环的数组
      pre = pre + cur
      return pre

    }, 4)
    console.log(va) // 相加得到的值 10

补充:

some 一真即真 如果有一个满足条件 就返回true,

let arr = [1,4 ,7 , 5]
let someArr = arr.some((item, index) => {return item > 6})
someArr
true
let someArr2 = arr.some((item, index) => {return item > 9})
someArr2
false

every 一假即假 所有的都满足条件 才返回true

let arr = [1,4 ,7 , 5]
let someArr = arr.every((item, index) => {return item > 6})
someArr
false

let someArr2 = arr.every((item, index) => {return item > 0})
someArr2
true

find : 返回第一个满足条件的元素

findIndex: 返回第一个满足条件的元素的index

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值