js中map和filter的区别

首先,这二者都会返回一个新数组,并不改变原数组
至于区别,来看一下下面几个例子

let arr = [{name:'张三',age:20,sex:'男'},{name:"李四",age:22,sex:"女"},{name:"王五",age:24,sex:'男'}]
let mapTest1 = arr.map((item)=>{
    return item.name
})
console.log(mapTest1)//[ '张三', '李四', '王五' ]

let filterTest1 = arr.filter(item=>{
    return item.name
})
console.log(filterTest1)//[{ name: '张三', age: 20, sex: '男' },{ name: '李四', age: 22, sex: '女' },{ name: '王五', age: 24, sex: '男' }]
let mapTest2 = arr.map(item=>{
    return item.age>20
})
console.log(mapTest2)//[ false, true, true ]

let filterTest2 = arr.filter(item=>{
    return item.age>20
})
console.log(filterTest2 )//[{ name: '李四', age: 22, sex: '女' },{ name: '王五', age: 24, sex: '男' }]
let mapTest3 = arr.map(item=>{
    if(item.age>20){
        return item.age
    }
})
console.log(mapTest3)//[ undefined, 22, 24 ]

let filterTest3 = arr.filter(item=>{
    if(item.age>20){
        return item.age
    }
})
console.log(filterTest3)//[{ name: '李四', age: 22, sex: '女' },{ name: '王五', age: 24, sex: '男' }]
let mapTest4 = arr.map(item=>{
    if(item.age>20){
        return item
    }
})
console.log(mapTest4)//[undefined,{ name: '李四', age: 22, sex: '女' },{ name: '王五', age: 24, sex: '男' }]

从上述几个例子可以看出来,map返回的是return的结果,而不是原数组中的元素,新的数组长度和原数组是一致的,而filter返回的是对原数组的过滤,其元素和原数组还是原数组中的元素,长度可能发生变化。
所以如果你是想要提取出数组中的某个属性,或是判断数组中的每个元素是否满足某个条件,可以使用map
如果你是想对原数组进行过滤,那就使用filter

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值