来来来先上一个数组:
const pets = [
{ type: 'Dog', name: 'Max'},
{ type: 'Cat', name: 'Karl'},
{ type: 'Dog', name: 'Tommy'},
]
let pet;
复制代码
仔细一个这个数组的每一项都是对象数组
pet = pets.map((item)=>{
if (item.type ==='Dog' && item.name === 'Tommy') {
return item
}
})
console.log(pet)复制代码
输出结果以下图:bash
pet = pets.forEach((item)=>{
if (item.type ==='Dog' && item.name === 'Tommy') {
return item
}
})
console.log(pet)复制代码
输出结果以下图:ui
pet = pets.filter(item =>{return item.type ==='Dog' && item.name === 'Tommy'});
console.log(pet)复制代码
输出结果以下图:spa
pet = pets.find(item =>{return item.type ==='Dog' && item.name === 'Tommy'});
console.log(pet)复制代码
输出结果以下图:3d
各类方法输出结果咱们都看到了,来来来咱们总结一波:code
1. map遍历每一项时并不会知足条件就中止执行,返回一个新的数组,遍历时知足条件的会被push进去,不知足的则push undefined因此新数组的长度和老数组的长度同样cdn
2. forEach遍历返回的是undefined 他就是简单的遍历对象
3. filter遍历会返回一个新的数组,可是是仅仅知足条件的会被push进去blog
4. find遍历则返回的是知足条件的那一项string
这仅仅是针对返回值的比较,还有其余方面的不一样
还有他们都不会改变原数组哦
因此根据你本身的需求,来选择!!!!