数组的map,filter,reduce,forEach方法都是有使用场景的。如果我们不根据使用场景,而随意使用,很容易出现类似这种的情况
let n = 1
let seat
seats.map(item => {
if (item.n === n) {
seat = item
}
})
这里我们只是想拿到数组中n值为1的对象。但map会返回一个新的数组,我们并没有进行数据处理,也没有使用返回信息,而只是用某种hack把符合条件的值赋值给了seat。
这样当然能拿到我们想要的结果,但并不是最优解,其实通过filter,我们可以很简单的拿到这个值
let n = 1
let seat = seats.filter(item => item.n === n)[0]
map与filter的区别
map 是把数组中的值一个一个的进行某种处理,把处理后的值放到一个新的数组中,并返回这个新的数组。
filter是通过某种筛选条件把数组中符合条件的值放到一个新的数组中,并返回这个新数组
filter和map都不会改变原数组的值