美文网首页
JavaScript五种迭代方法解析

JavaScript五种迭代方法解析

作者: 一叶信笺飘云间 | 来源:发表于2017-12-13 23:49 被阅读7次

    先来看一下是哪五种:

    • every()
    • some()
    • filter()
    • map()
    • forEach()

    我将这五个方法分成三类:

    1. 首先是every()和some(),两者都是遍历数组的每项,区别在于:every()要求每一项都符合给定函数才会返回true;some()只要有一项符合给定函数就会返回true。
    var numbers = [0,1,2,3,4,5];
    var resEvery = numbers.every(function(item,index,array){
        return item > 1;
    })
    var resSome = numbers.some(function(item,index,array){
        return item > 1;
    })
    console.log(resEvery);     // false
    console.log(resSome);      // true
    
    1. 其次是filter(),这个方法会遍历数组的每项,只要符合给定函数的每一项,最后都会被合并在一个新的数组里返回。
    var numbers = [0,1,2,3,4,5];
    var resFilter = numbers.filter(function(item,index,array){
        return item > 1 && item < 4;
    })
    console.log(resFilter);     // [2,3]
    
    1. 最后是map()和forEach(),两者都是遍历数组的每项,对每一项都执行给定函数的方法,区别在于:map()会将执行给定函数之后所得的每一项合并成一个数组返回;forEach()则没有返回(相当于for的遍历)。
    var numbers = [0,1,2,3,4,5];
    var resMap = numbers.map(function(item,index,array){
        return item*2;
    })
    
    var resForEach = numbers.forEach(function(item,index,array){
        return item*2;
    })
    console.log(resMap);          // [0, 2, 4, 6, 8, 10]
    console.log(resForEach);      // undefined
    

    注:正常情况下,以上五种迭代方法均不会改变原数组里的值(除非在执行函数里执行操作原数组的方法)

    相关文章

      网友评论

          本文标题:JavaScript五种迭代方法解析

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