美文网首页
数组ES6-- map/forEach/filter/every

数组ES6-- map/forEach/filter/every

作者: 墨芊baby | 来源:发表于2018-12-28 15:54 被阅读0次
  • 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方法会对原来的数组进行修改,其他的数组操作方法只有返回值不同,对原数组都没有影响,即原数组不变。

相关文章

网友评论

      本文标题:数组ES6-- map/forEach/filter/every

      本文链接:https://www.haomeiwen.com/subject/ebsslqtx.html