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