精华内容
下载资源
问答
  • js数组迭代

    2021-01-21 12:21:01
    数组迭代方法对每个数组项进行操作,可以简单地理解为按顺序访问目标(数组、对象等)中的每一项(其实和遍历概念没什么差别) 迭代分为: 查找 遍历 查找 indexof()方法在数组中搜索元素值并返回其位置 语法:...

    数组迭代方法对每个数组项进行操作,可以简单地理解为按顺序访问目标(数组、对象等)中的每一项(其实和遍历概念没什么差别)

    迭代分为:

    • 查找
    • 遍历

    查找

    • indexof()方法在数组中搜索元素值并返回其位置
      语法:array.indexOf(item, start)
    item start
    必需,要检索的元素 可选,从哪里开始搜索,负值将从结尾开始的给定位置开始,并搜索到结尾
    var fruits = ["Apple", "Orange", "Apple", "Mango"];
    var a = fruits.indexOf("Apple");
    console.log(a);//0
    
    • lastIndexOf()与indexOf() 类似,但是从数组结尾开始搜索
      语法:array.lastIndexOf(item, start)
    item start
    必需,要检索的元素 可选,从哪里开始搜索,负值将从结尾开始的给定位置开始,并搜索到开头
    var fruits = ["Apple", "Orange", "Apple", "Mango"];
    var a = fruits.lastIndexOf("Apple");
    console.log(a);//2
    
    • find() 方法返回通过测试函数的第一个数组元素的值
      语法:find((value,index,array) => {})
    var numbers = [4, 9, 16, 25, 29];
    var first = numbers.find(myFunction);
    
    function myFunction(value, index, array) {
      return value > 18;
    }
    // [25, 29]
    
    • findIndex() 方法返回通过测试函数的第一个数组元素的索引
      语法:find((value,index,array) => {})
    var numbers = [4, 9, 16, 25, 29];
    var first = numbers.find(myFunction);
    
    function myFunction(value, index, array) {
      return value > 18;
    }
    // 3
    

    遍历

    • some()
    • every()
      两者的函数都接受三个值(项目值,项目索引,数组本身)
      这两个方法都是依次对数组的每项进行判断,返回boolean类型的值。不同的是,some是只要有一项满足条件就返回true,而every要求所有项都满足条件才会返回true
    
      var a=[1,2,3,4,5,4,3,2,1];
    
      var everyResult=a.every(function(item,index,a){
          return (item>2);
      });
      var someResult=a.some(function(item,index,a){
          return (item>2);
      });
      
      alert("everyResult:"+everyResult);//false
      alert("someResult:"+someResult);//true
    

    这两个方法只做判断,都不会对数组进行改变

    • forEach
    • map
    • filter
      三者的函数都接受三个值(项目值,项目索引,数组本身)
      forEach:其就和for循环异曲同工,循环遍历,对每项进行操作。
      map:和forEach非常相似,其返回的是每次函数调用后的结果所组成的数组,本身不会改变
      filter:与上面两者相似,但是其返回的是函数调用结果值为true的项 (将调用的函数理解成表达式,即返回符合这个表达式所有项组成的新数组)
      区别:
      map和forEach其实用法上没啥子区别,但是!还是有点差别的,forEach是没有返回值的。
      然后,filter顾名思义,过滤器,是过滤掉数组不符合条件的项。所以用途上,filter会有很大的不同,常用于筛选掉不要的数组项
    var a=[1,2,3,4,5,4,3,2,1];
    
    var filterResult=a.filter(function(item,index,a){
      return (item>2);
    });
    
    var mapResult=a.map(function(item,index,a){
        return item*2;
    });
    var foreachResult=a.forEach(function(item,index,a){
    	if(item<5) a[index]=0;
    });
      
    alert("filterResult:"+filterResult);  //3,4,5,4,3
    alert("mapResult:"+mapResult);     //2,4,6,8,10,8,6,4,2
    alert("foreachResult:"+foreachResult); //underfined
    alert("foreachResult:"+a);        //0,0,0,0,5,0,0,0,0
    
    • reduce()
    • reduceRight()
      函数接受四个个值(总数(初始值/先前返回的值),项目值,项目索引,数组本身)
      两个方法类似,只不过reduce方法是从左到右,reduceRight方法是从右到左
    var a=[1,2,3,4,5,4,3,2,1];
    
    var sum=a.reduce(function (prev,cur,index,array){
      return prev+cur;
    })
    
    alert("sum:"+sum); // sum:25
    

    上诉用法是最常用的用法,用于对数组所有项进行求和。事实上求积也是可以的,这个方法的灵魂就是有了这个prev值,具体看你如何以应用(不过事实上用的不多,在外部var一个sum变量也可以做到)

    ps:reduce()和reduceRight()对于空数组是不会执行回调函数的。

    补充一点,注意:forEach,filter,every,some会跳过空位,map会跳过空位,但是会保留这个值。

    展开全文
  • JS数组迭代

    2019-09-28 15:33:40
    //数组迭代方法是对每个数组进行操作 //value 当前项目值 index 索引数 array 数组本身 //为每个数组元素调用一次函数 //Array.forEach()//没有返回值,只是针对每个数组项调用指定的函数 var a = ""; var num ...

    //数组迭代方法是对每个数组进行操作

    //value   当前项目值     index   索引数     array   数组本身

    //为每个数组元素调用一次函数

    //Array.forEach()//没有返回值,只是针对每个数组项调用指定的函数

    var a = "";

    var num = [1,2,3,4,5];

    num.forEach(my);

    function my (value,index){

           a + = value + "<br/>";     //调用项目值

           a + = index + "<br/>";     //调用索引数

    }

    document.write(a);

    ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

    //map方法的作用就是将原数组按照一定的规则生成一个新的数组,不影响⚪数组。

    var num = [1,2,3,4,5];

    var num_ = num.map(my);

    function my(value){

          return value * 2;     //这里可以使用加减乘除

    }

    document.write(num_);

    ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

    //filter为"过滤"、"筛选"的意思。指数组filter后,返回过滤后的新数组。用法和参数跟map差不多。

    Array.filter()

    var num = [1,2,3,4,5];

    var a = num.filter(my);

    function my(value,index){

          return value > 3;

    }

    document.write(a);

    ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

    //接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最后计算为一个值

    Array.reduce()

    total 总数

    var num = [1,2,3]

    var a = num.map(my)

    function my(total,value){

          console.log(total1);

          console.log(value);

       return total+value

    }

    console.log(a);

    //Array.reduceRight()   使用方法和Array.reduce一样,不同之处在于它是从最后一个值开始计算的。

    ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

    //检查数组中的每一项是否符合条件 

    Array.every()

    var num = [1,2,3,4,5];

    var all = num.every(my);

    function my(value) {

          return value > 3;

          return value > 0;

    }

    document.write("所有大于3的是:" + all);     //全部满足才为true 否则为false

    ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

    //返回一个布尔值(true或false),检查数组中是否有某些项符合条件

    Array.some()

    var num = [1,2,3,4,5];

    var all = num.some(my);

    function my(value,index) {

          return value > 3;                //ture

          return value > 6;                //false

    }

    document.write("所有大于3的是:" + all);     //只要满足一个即为true

    ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

    //在数组中搜索元素值并返回其位置

    Array.indexOf()

    var fruits = ["a","A","p","x","A","s","r"];

    var a = fruits.indexOf("A");

    document.write(fruits)

    document.write("A   被找到的位置是:" + a);     //搜索到第一个 就停止搜索 显示为索引数位置为1

    ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

    //与Array.indexOf()相似,但是从数组从结尾开始搜索

    Array.lastIndexOf()

    var   fruits = ["a","A","p","x","A","s","r"];

    var a = fruits.lastIndexOf("A");

    document.write("A   被找到的位置是: " + a);     //搜索到第一个 就停止搜索 显示索引位置为3

    ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

    //find方法用于找出第一个符合条件的数组成员。他的参数跟forEach方法是一样的;所有数组成员依次执行回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合的成员,则返回undefined。

    Array.find()

    var num = [1,2,3,4,5];

    var first = num.find(my);

    function my(value){

          return value > 3;

          return value > 6;

    }

    document.write("大于3的第一个值是:" + first);

    ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

    //findIndex方法和find相似;不过它返回数组中符合条件的元素的索引。如果所有成员都不符合条件,则返回-1.

    Array.findIndex()

    var num = [1,2,3,4,5];

    var first = (num.findIndex(my));

    function my(value,index,array){

          return value > 3;

          return value > -5;

          return value > 6;

    }

    document.write("大于3的第一个值的下标数是:" + first);

    转载于:https://www.cnblogs.com/wzy123/p/11385469.html

    展开全文
  • js数组迭代方式总结

    2017-08-22 08:33:43
    js数组迭代方式总结首先我们定义一个数组:var testArray=[1,2,3,4,5,6,7,8,9]; 1 for for (var i = 0; i ; i++) { console.log(testArray[i]); }; 这个循环每执行一次,都要检查一次 array.length 的值,效率并不...

    首先我们定义一个数组:

    var testArray=[1,2,3,4,5,6,7,8,9];
    

    1 for

        for (var i = 0; i < testArray.length; i++) {
            console.log(testArray[i]);
        };
    

    这个循环每执行一次,都要检查一次 array.length 的值,效率并不高。

    2 for…in

        for (var val in testArray) {
            console.log(testArray[val]);
        }
    

    这里需要注意:取值的时候,value只是index 是索引,而不是真正需要的值。

    for-in 需要分析出 array 的每个属性,这个操作的性能开销很大。所以尽量不要用 for-in,除非你不清楚要处理哪些属性,例如 JSON 对象这样的情况。

    3 for each … in

        for each(var val in testArray){
            console.log(val);  
        }
    

    并不推荐的一种写法,在新版本的已经不再支持。推荐用 for of 代替。

    4 for … of

        for (val of testArray) {
          console.log(val);  
        }
    

    这是目前遍历数组最简洁和直接的语法;
    它避免了for-in的所有缺陷;
    与forEach()不一样,它支持break,continue和return。

    5 还有一种 ECMAScript5 提供的方法。forEach()

    testArray.forEach(function(item,index,array){
        console.log(item);
    })
    

    综上,推荐使用 for of 遍历数组。

    展开全文
  • js数组迭代方法总结

    2020-02-06 13:32:30
    数组迭代,数组有很多的迭代方法,在这边做个总结。 迭代:就是对数组中的每一项都进行相应的操作 这些迭代方法都有一个回调函数:有三个参数:数组中的每个元素,元素的索引,原数组。 1、forEach(回调函数) forEach...

    数组迭代,数组有很多的迭代方法,在这边做个总结。

    迭代:就是对数组中的每一项都进行相应的操作
    这些迭代方法都有一个回调函数:有三个参数:数组中的每个元素,元素的索引,原数组

    1、forEach(回调函数)
    forEach方法没有返回值,修改原数组。

    var nums = [1,3,5,6,8];
    nums.forEach(function(item,index,oldArr) {
                console.log("第"+index+"个元素乘2后是:"+item*2);
                console.log(oldArr);
            });
    console.log(nums);
    

    2、map(回调函数)
    通过指定函数处理数组的每个元素,并返回处理后的结果的数组。

    var nums = [1,3,5,6,8];
    var result = nums.map(function(item,index) {
                return item<4;
            });
    console.log(result);//[true, true, false, false, false]
    

    3、filter(回调函数)
    filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
    注: filter() 不会对空数组进行检测, 不会改变原始数组。

            var nums = [1,3,5,6,8];
            var result = nums.filter(function(item,index) {
                return item<4;
            });
            console.log(result);//[1, 3]
    

    4、every(回调函数)
    检测数值元素的每个元素是否都符合条件,有一个元素让条件为false,则返回false, 且剩余元素不会再进行检测。

            var nums = [1,3,5,6,8];
            var result = nums.every(function(item,index) {
                return item<4;
            });
            console.log(result);//false
    

    5、some(回调函数)
    检测数组元素中是否有元素符合指定条件。有一个元素让条件为true,则返回true, 且剩余元素不会再进行检测。

            var nums = [1,3,5,6,8];
            var result = nums.some(function(item,index) {
                return item<4;
            });
            console.log(result);//true
    

    6、find(回调函数)
    返回符合条件的第一个元素

            var nums = [1,3,5,6,8];
            var result = nums.find(function(item,index) {
                return item<4;
            });
            console.log(result);//1
    

    7、findIndex(回调函数)
    返回符合条件的第一个元素的索引值

            var nums = [1,3,5,6,8];
            var result = nums.findIndex(function(item,index) {
                return item<4;
            });
            console.log(result);//0
    

    8、reduce(回调函数)
    array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
    total 必需。初始值, 或者计算结束后的返回值。
    currentValue 必需。当前元素
    currentIndex 可选。当前元素的索引
    arr 可选。当前元素所属的数组对象。
    initialValue 可选。传递给函数的初始值

    可用来进行计算操作如求和等

    var nums = [1, 2, 3, 4, 5];
            let res = nums.reduce((prev, cur, curIndex, arr) => {
                return prev + cur
            }, 0)
            console.log(res);
    
    展开全文
  • JS 数组迭代方法

    2014-11-25 21:54:38
    数组迭代的方法
  • js 数组迭代方法

    2021-04-07 20:19:15
    数组建议使用forEach进行遍历 every some filter reduce 求和、rightreduce() ...values()获取值迭代器 或者数组[Symbol.iterator] map 映射 find(回调) 返回值 否则 undefined findIndex(回调) 返回索引 否则 -1 ...
  • js数组迭代方法

    2020-07-07 22:24:59
    forEach( )作用是遍历数组;参数作为回调函数 回参一:数组元素 item 回参二:数组索引值 index var arr = [2,3,4,5,6,7]; arr.forEach(function(item,index){ console.log(index,'----'); console.log(item) } ...
  • 数组迭代方法接受回调函数,回调函数接受参数说明: total——总数(初始值/先前返回的值) value——数组元素值 index——数组元素索引 array——数组本身 */ let arr = [45, 4, 9, 16, '25'] let newArr = ...
  • JS 数字 - JS数组迭代

    2020-04-16 15:18:45
    JavaScript 数值始终是 64 位的浮点数 整数(不使用指数或科学计数法)会被精确到 15 位 ...数字字符串只有 + 时是级联,其他时候JS会尝试将字符串转换为数字再进行运算 NaN - 非数值 例如:var x = 100...
  • JS数组迭代方法

    2019-01-27 16:19:00
    先说every()和 some(),它们都用于查询数组中的项是否满足某个条件。 every(): var numbers = [1,2,3,4,5,4,3,2,1];var everyResult = numbers.every(function(item, index, array){return (item > 2);}); ...
  • js数组迭代

    2019-03-06 22:03:07
    every():该函数一旦返回false,则立即停止当前迭代; var numbers = [1,2,3,4,5,6,7,8,9,10]; var everyResult =numbers.every(function(item, index, array) { console.log("当前"+index); ...
  • javascript中的map()方法用于返回一个新数组。...JS中的其他四种的数组迭代方法,他们都接受2个参数,第二个参数thisValue为可选,代表着运行函数function(currentValue,index,arr)时的作用域对象 array.some(f...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,071
精华内容 428
关键字:

js数组迭代