- forEach:从头至尾遍历数组,为每个元素调用指定函数;
这个方法执行是没有返回值的,对原来数组也没有影响
不可以用break、continue、return如果需要中途跳出循环,用for
num: [10,20,30]
foo(){
let arr2 = []
this.num.forEach((item,index)=>{
item = item * 10
arr2.push(item) //不支持return值,需要往新数组里push每一项
})
return arr2;
}
console.log(this.foo()) //[100,200,300]
- map(让数组通过某种计算产生一个新数组,不会影响原数组)
区别:map的回调函数中须用return返回值;
num: [10,20,30],
arr: []
foo(){
this.arr = this.num.map((item,index)=>{
return item * 10
})
return this.arr
}
console.log(this.foo()) [100,200,300] //产生一个操作后的新数组
//第二个实例:取出所有email
res:[],
arr: [
{name: "aaa", "email": "zhang@email.com"},
{name: "bbb", "email": "jiang@email.com"},
{name: "ccc", "email": "li@email.com"}
]
this.
foo(){
this.res = this.arr.map((item)=>{
return item.email
})
return (this.res).join(',') //把数组中的所有元素放入一个字符串,按指定的分隔符,返回值是字符串, 默认是逗号
}
- filter 筛选出数组中符合条件的项,返回一个新数组
let arr = [1,2,3,4,5];
let newArray = arr.filter((item,index)=> {
return item > 3;
});
console.log(newArray) // [4,5]
- every 检测数组中的每一项是否符合条件
可以理解成 && '且'的关系,返回值是布尔值
数组所有元素满足条件就返回true,有一个不满足条件就返回false
let arr = [1,2,3,4,5];
let newArray = arr.every((item,index)=> {
return item > 3;
});
console.log(newArray) // false
- some 检测数组是否有某些项目符合条件
可以理解成 || '或'的关系
let arr = [1,2,3,4,5];
let newArray = arr.some((item,index)=> {
return item > 3;
});
console.log(newArray) // true
重点总结:
forEach()无返回值,map()和filter()返回新数组,every()和some()返回布尔值
push、 shift、 pop、 unshift、 reverse、 sort、 splice方法会对原来的数组进行修改,其他的数组操作方法只有返回值不同,对原数组都没有影响,即原数组不变。