map
:可以遍历你指定的数组,执行回调函数,将回调函数的执行结果存储在map函数内部所创建的数组中,最终将数组返回
// map: 它可以执行你传入的回调函数,每次为回调函数传递一个参数(遍历到的数组的元素),将回调函数的执行结果存储到map函数内部所创建的数组,最终将数组返回--它是一个非变更方法,不会改变原数组
let arr1 = [1, 2, 3, 4, 5, 6]
// 将数组的每一个值翻倍,得到新数组
// let temp = arr.map(function(v) {
// return v * 2
// })
// console.log(temp)
// 自己定义一个新的map方法,也能实现类似map方法的功能
// callback:回调函数 //假设callback = v 便于理解
Array.prototype.mymap = function (v) {
let temp = []
// 业务处理
for (let i = 0; i < this.length; i++) {
let res = v(arr1[i])
temp.push(res)
}
return temp
}
let result = arr1.mymap(function (v) {
return v * 2
})
console.log(result)
filter
:它可以执行你传入的回调函数,每次为回调函数传递一个参数(遍历到的数组的元素),如果函数的执行结果为true,就会将当前元素存储到filter函数内部所创建的数组,最终将数组返回–它是一个非变更方法,不会改变原数组
// filter:它可以执行你传入的回调函数,每次为回调函数传递一个参数(遍历到的数组的元素),如果函数的执行结果为true,就会将当前元素存储到filter函数内部所创建的数组,最终将数组返回--它是一个非变更方法,不会改变原数组
Array.prototype.myfilter = function (callback) {
let temp = []
for (let i = 0; i < arr.length; i++) {
let res = callback(arr[i]) //判断true/false 为true则返回该值 为false则不返回该值(删除)
if (res) {
temp.push(arr[i])
}
}
return temp
}
let result = arr.myfilter(function (v) {
return v.id != 10//判断true/false 为true则返回该值 为false则不返回该值(删除)
})
console.log(result)