filter与map区别
filter是通过生成 True 和 False 组成的迭代器将可迭代对象中不符合条件的元素过滤掉;它会执行你所传入的回调函数,每次给回调函数传入一个参数,如果回调函数的执行结果为true,就将这个值存储到filter内部所创建的数组中,最终将数组返回// 需求:最终返回大于100的值let arr = [12, 4, 324, 23, 4, 35, 34, 534, 5]Array.protot
·
filter是通过生成 True 和 False 组成的迭代器将可迭代对象中不符合条件的元素过滤掉;
它会执行你所传入的回调函数,每次给回调函数传入一个参数,如果回调函数的执行结果为true,就将这个值存储到filter内部所创建的数组中,最终将数组返回
// 需求:最终返回大于100的值
let arr = [12, 4, 324, 23, 4, 35, 34, 534, 5]
Array.prototype.myfilter = function(callback) {
// 定义一个内部数组
let temp = []
// 业务处理--过滤处理
for (let i = 0; i < arr.length; i++) {
// 执行回调函数,将当前遍历到的元素传递给回调函数,如果回调函数的返回结果为true,就将当前元素存储到temp
let res = callback(arr[i]) // true/false
if(res){ // 为true,说明这个值我要保留,那么应该添加到temp数组中
temp.push(arr[i])
}
}
// 将数组返回
return temp
}
let temp = arr.myfilter(function(value){
return value > 100
})
console.log(temp);
map返回的则是 True 和 False 组成的迭代器
可以传入回调,每一次遍历执行回调函数,为回调函数传入当前遍历到的元素,将回调函数的执行结果存储到数组中,最终将返回,一般 实现数据加工处理可以使用map
let arr = [12, 3, 213, 23, 4, 234, 45]
// callback:回调函数
Array.prototype.mymap = function(callback) {
// 有一个内部数组
let temp = []
// 执行回调函数,将回调函数的结果存储到内部数组中
for (let i = 0; i < arr.length; i++) {
let res = callback(arr[i])
temp.push(res)
}
// 将内部数组返回
return temp
}
let fn = function(value, index) {
return value * 3 + 5
}
let temp = arr.mymap(fn)
console.log(temp)
相同点:filter 和 map 都是对数组的操作,均返回一个新的数组
不同点:filter是满足条件的留下,是对原数组的过滤;map则是对原数组的加工,映射成一对一映射的新数组
希望以上内容可以对你有所帮助!
更多推荐
已为社区贡献1条内容
所有评论(0)