javascript---数组(对象)遍历总结

有些事必须有返回结果的  return  如果没有return 的话 就会默认返回一个都是undefan的一个数组

一、forEache:

       含义:遍历数组全部元素,

       1.利用回调函数数组进行操作(是因为不能return操作),

       2.自动遍历数组.length次数,(同时在自动遍历的时候不能使用 break 、continue跳出循环,所以是不可控的),

       3.并且不会生成新的数组。

    格式:数组.forEache(函数)

       函数中有三个参数:数组元素,数组下标,数组本身

    案例:

      var arr = [1,4,6,2,2,5,5,4];

      var  a = arr.forEach(function(item, index, arr){

          console.log(item);    //输出的是数组的元素

           console.log(index); //输出的下标
           console.log(arr); //输出的是数组

          if(item == 6 ){

            break;   //foreach2.html:13 Uncaught SyntaxError: Illegal break statement break不存在;

            continue;  //foreach2.html:14 Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement continue不存在;

            return 6;

          }

       })

       console.log(a);  //打印的是undefind ; 所以return 并不起什么作用。

    什么是回调函数:

       在JavaScript中函数也是对象的一种,

       同样对象可以作为参数传递给函数,因此函数也可以作为参数另外一个函数,这个作为参数的函数就是回调函数

二、map:

    map与forEach的异同:

    相同:同样 map();也不可以使用break、continue 进行跳出循环。2.同样都是不可以改变元素组

    不同:1.map()方法可以进行return操作。

    格式:数组.map(函数)

       函数中有三个参数:数组元素,数组下标,数组本身

    案例:1.把对象进行转换成数组,然后使用 map() 这个方法进行遍历。

         var obj = {a: 3, b:4, c: 5};

       Object.keys(obj);  //这个是把对象转换成数组;

       var arr = Object.key(obj); // 输出的是 arr= [a,b,c];

       Object keys(obj).map(function(item, index, arr){

        console.log(item) ; //输出的是: a,b,c 这个数组的对象

        console.log(obj[item]);  //输出的是  对象[属性] = 值;   

       })

       2.使用map()方法进行遍历数组,并求和。

       var  arr = [1,4,6,9,2,5,10,4];

       var sum = 0;

       var ref = arr.map(function(item, index, arr){

          console.log(item); //返回的是元素

          console.log(index);  // 返回的是数组中元素的下标

             console.log(arr); // 返回的是  arr[] 数组

          sum = sum + item; 

             return sum;

       })

       console.log(ref); // 输出的是 return 返回的sum值

       3.只要能return 就能进行链式操作。

             var arr = [1,4,6,9,2,5,10,4];

       var red = arr.map(function(item, index, arr){

       return  item; // 把数组元素return 过去

       }).map(function(item, index, arr){ // 首先获取到数组中的所有元素,然后在进行遍历,

       return item * 2;         //在遍历的过程中让数组中的元素进行循环遍历进行 * 2 操作。

       })

          console.log(red);    //这个最终输出的是 在循环遍历中*2的操作。

三、filter:

            含义: 过滤

            理解: 遍历数组。根据return的条件进行返回一个新的数组。

       1.return 返回一个新的数组。

       2.同样不可以使用break,continue。进行结束操作。

    格式: arr.filter(函数);

       函数的三个参数 : 数组元素,数组下标  本身数组

       var arr = [6,5,7,9,8,6,2,1,40];

       var ref = arr.filter(function(item, index, arr){

                          if(item > 3){

        return item;

        }

        })

        console.log(ref);  // 最终输出的结果是 数组对象大于3,如果不是大于3的则不返回给 ref

               // 所以该操作是 过滤,并改变原数组。

四、some()

      含义:遍历数组,找到满足return条件的第一个值,终止遍历, 通过 return true ; 来进行终止遍历,返回值是 true 或者是false.

      2.同时也是不可以使用break ,continue 来终止函数。

      格式: arr.some(函数);  函数包括三部分; 数组元素, 元素下标 , 本身数组

            案例: var arr = [6,5,7,9,8,6,2,1,40];

         var ref = arr.some(function(item,index,arr){

            if(item == 2){

             return true; // 则进行 终止遍历

            }

         })

         console.log(ref);

五、every();

               含义:遍历数组。找到任意一个(都同时满足条件,)不满足条件的都 使用return 进行终止遍历,终止遍历则返回false , 如果是全部满足的话,则return  true 进行返回true。

       同时也是不可以使用 break continue 进行跳转遍历;

       格式: arr.every(函数); 函数中包括三部分 : 数组元素,元素下标,本身数组

        var arr = [6,5,7,9,8,6,2,1,40];

          var red = arr.evaey(function(item, index, arr){

         if(item >3){

          return  false; //  来进行结束数组遍历          

        }})

       console.log(red);

、reduce()  含义: 重要

          //可以进行查看数组中元素是否有重复的,如果有重复,那么数组元素重复几次

          同样是不可以使用break, continue 来进行跳出循环。

        格式:arr.reduce(参数1, 参数2);
            参数1:与上面一样,遍历的function
            function参数 ( pre(上一次return值),item, index, arr )
            参数2:当参数1一开始没有值时的初始值

            var arr = [1,4,6,2,2,5,5,4];
            console.log(arr)
            var test = arr.reduce(function(pre, item, index, arr) {
            !pre[item]? pre[item] = 1: pre[item]++;  // 如果为空则赋值为1, 如果不是空则进行加一。 上次没有返回值,如果没有则就等于1
            return pre;
            }, {});
            console.log(test);

七、.for 循环也是遍历  

八、.while

九、 do  while 

十、for(对象,in  数组)      含义:这个是对象遍历

            var obj = {a: 5, b: 6, c: 7};

            for( key in obj){
            if( obj[key] == 6 ){
            // break;
            continue;
            }
            console.log(key);
            console.log(obj[key]);
            }

十一、solt :                   

            含义:也是对数组进行遍历。 这个遍历是进行比较大小

            情况:简单类型数组  ,引用类型复杂数组

            情况1:简单类型数组

                    var arr3 = [8,9,15,65,8,59,2];

            var arr5 = arr3.sort(function(n1,n2)){
              return n1-n2;   //如果相减为正的话就不移动位置,为负就移动位置
              必须有返回结果 .
            })
            console.log(arr5);

 

posted @ 2020-10-22 14:33  诗亦0615  阅读(331)  评论(0)    收藏  举报