美文网首页JavaScript 进阶营
js基础之数组迭代方法

js基础之数组迭代方法

作者: 贤总_ | 来源:发表于2019-05-28 18:01 被阅读0次
    Array.forEach()

    forEach() 方法为每个数组元素调用一次函数(回调函数)。

    var txt = "";
    var numbers = [45, 4, 9, 16, 25];
    numbers.forEach(myFunction);
    
    function myFunction(value) {
      txt = txt + value + "<br>"; 
    }
    
    Array.map()

    map() 方法通过对每个数组元素执行函数来创建新数组。
    map() 方法不会对没有值的数组元素执行函数。
    map() 方法不会更改原始数组。

    这个例子将每个数组值乘以2:

    var numbers1 = [45, 4, 9, 16, 25];
    var numbers2 = numbers1.map(myFunction);
    
    function myFunction(value, index, array) {
      return value * 2;  
    }
    console.log(numbers2 );     //90,8,18,32,50
    

    请注意,该函数有 3 个参数:
    项目值
    项目索引
    数组本身
    当回调函数仅使用 value 参数时,可以省略索引和数组参数:

    var numbers1 = [45, 4, 9, 16, 25];
    var numbers2 = numbers1.map(myFunction);
    
    function myFunction(value) {
      return value * 2;
    }
    
    Array.filter()

    filter() 方法创建一个包含通过测试的数组元素的新数组。
    这个例子用值大于 18 的元素创建一个新数组:

    var numbers = [45, 4, 9, 16, 25];
    var over18 = numbers.filter(myFunction);
    
    function myFunction(value, index, array) {
      return value > 18;
    }
    console.log(over18);     //45,25
    

    请注意此函数接受 3 个参数:
    项目值
    项目索引
    数组本身
    在上面的例子中,回调函数不使用 index 和 array 参数,因此可以省略它们:

    var numbers = [45, 4, 9, 16, 25];
    var over18 = numbers.filter(myFunction);
    
    function myFunction(value) {
      return value > 18;
    }
    
    Array.reduce()/Array.reduceRight()

    reduce()/reduceRight() 方法在每个数组元素上运行函数,以生成(减少它)单个值。
    reduce()/reduceRight() 方法不会减少原始数组。

    这个例子确定数组中所有数字的总和:

    //reduce() 方法能够接受一个初始值:
    var numbers1 = [45, 4, 9, 16, 25];
    var sum = numbers1.reduce(myFunction, 100);
    
    function myFunction(total, value) {
      return total + value;
    }
    //sum=199
    
    var numbers1 = [45, 4, 9, 16, 25];
    var sum = numbers1.reduceRight(myFunction);
    
    function myFunction(total, value) {
      return total + value;
    }
    //sum=99
    
    Array.every()

    every() 方法检查所有数组值是否通过测试。

    这个例子检查所有数组值是否大于 18:

    var numbers = [45, 4, 9, 16, 25];
    var allOver18 = numbers.every(myFunction);
    
    function myFunction(value) {
      return value > 18;
    }
    //返回false
    
    Array.some()

    some() 方法检查某些数组值是否通过了测试。

    这个例子检查某些数组值是否大于 18:

    var numbers = [45, 4, 9, 16, 25];
    var someOver18 = numbers.some(myFunction);
    
    function myFunction(value, index, array) {
      return value > 18;
    }
    //返回true
    //请注意此函数接受 3 个参数:项目值,项目索引,数组本身
    
    Array.indexOf()

    indexOf() 方法在数组中搜索元素值并返回其位置。

    注释:第一个项目的位置是 0,第二个项目的位置是 1,以此类推。

    //检索数组中的项目 "Apple":
    var fruits = ["Apple", "Orange", "Apple", "Mango"];
    var a = fruits.indexOf("Apple");
    //Apple 被找到的位置是:1
    

    如果未找到项目,Array.indexOf() 返回 -1。
    如果项目多次出现,则返回第一次出现的位置。

    Array.lastIndexOf()

    Array.lastIndexOf() 与 Array.indexOf() 类似,但是从数组结尾开始搜索。

    //检索数组中的项目 "Apple":
    var fruits = ["Apple", "Orange", "Apple", "Mango"];
    var a = fruits.lastIndexOf("Apple");
    
    Array.find()

    find() 方法返回通过测试函数的第一个数组元素的值。

    这个例子查找(返回)大于 18 的第一个元素的值:

    var numbers = [4, 9, 16, 25, 29];
    var first = numbers.find(myFunction);
    
    function myFunction(value, index, array) {
      return value > 18;
    }
    //大于 18 的第一个值是:25
    //3 个参数:项目值,项目索引,数组本身
    
    Array.findIndex()

    findIndex() 方法返回通过测试函数的第一个数组元素的索引。

    这个例子查找大于 18 的第一个元素的索引:

    var numbers = [4, 9, 16, 25, 29];
    var first = numbers.findIndex(myFunction);
    
    function myFunction(value, index, array) {
      return value > 18;
    }
    //大于 18 的第一个值的索引是:3
    

    相关文章

      网友评论

        本文标题:js基础之数组迭代方法

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