zoukankan      html  css  js  c++  java
  • js基础之数组迭代方法

    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
    
  • 相关阅读:
    149. Max Points on a Line(js)
    148. Sort List(js)
    147. Insertion Sort List(js)
    146. LRU Cache(js)
    145. Binary Tree Postorder Traversal(js)
    144. Binary Tree Preorder Traversal(js)
    143. Reorder List(js)
    142. Linked List Cycle II(js)
    141. Linked List Cycle(js)
    140. Word Break II(js)
  • 原文地址:https://www.cnblogs.com/jessie-xian/p/11595926.html
Copyright © 2011-2022 走看看