zoukankan      html  css  js  c++  java
  • 2018-6-3_《JS遍历方法(12个)》

    /*
    12个遍历方法:
    1. forEach  ES5
    2. every  ES5
    3. some  ES5
    4. filter  ES5
    5. map  ES5
    6. reduce  ES5
    7. reduceRight ES5 与reducer大同
    
    8.  find  ES6  根据条件找到数组成员。返回第一个数组成员,如果没有,返回'undefined'
    9. findIndex  ES6 根据条件找到数组成员。返回第一个数组成员的下标,如果没有,返回'undefined'
    10. keys ES6 11. values ES6 12. entries ES6 */

      一. forEach()

    //forEach()
    // 按升序对数组中每一项(有效值)进行一次回调
    //!!!!!返回 undefined值,即使你return了一个值,即返回无效
    
    let arr = [1,3,5];
    arr.forEach((v,i,a) => {
    if(!v) return; console.log( v*v); //1,9,25 });

      

    二. every

    //every()———检测数组中所有元素是否附和规则判断
    //参数和forEach一样, v,i,a, return有效
    let arr_1 = [1,3,5,7,9];
    let arr_2 = [2,4,6,8];
    let isOdd = (v) => {return v%2 === 0};
    
    let ret_1 = arr_1.every(isOdd);
    let ret_2 = arr_2.every(isOdd);
    
    console.log(ret_1);  //false
    console.log(ret_2); //true
    

      

    三. some

    //some()——数组中是否有满足判断条件的元素
    // 逻辑等同于: ||
    let arr_1 = [1,3,5,7,9,88];
    let arr_2 = [3,7,9];
    
    //函数
    let isOdd = (v) => {return v%2 === 0};
    
    let ret_1 = arr_1.some(isOdd); // 是否存在一个(或多个)偶数 ture (88)
    let ret_2 = arr_2.some(isOdd); // 是否存在一个(或多个)偶数 false
    
    console.log(ret_1);
    console.log(ret_2);
    

      

    四. filter

    //filter(); 过滤数组元素, 返回新数组
    // 参数: v,i,a;  return有效;
    // 注意: 是过滤
    
    let arr = [1,3,5,7];
    let ret = arr.filter(v => {
        return v >3; //返回大于3的数
    });
    
    console.log(ret); //[5,7]
    console.log(ret instanceof Array);  //true
    

      

    五. map

    //map()——对数组中的每个元素都处理,返回新数组
    // 参数:v, i, a  ,return有效
    
    let arr = [1,2,4,8];
    let arr_2 = [1,2,4,NaN,8];
    let arr_3 = [1,2,4,null,8];
    let arr_4 = [1,2,4,undefined,8];
    
    let ret = arr.map(v => v*v);
    let ret_2 = arr_2.map(v => v*v);
    let ret_3 = arr_3.map(v => v*v);
    let ret_4 = arr_4.map(v => v*v);
    
    console.log(ret); //[1,4,16,64]
    console.log(ret_2);  //[1,4,16,NaN,64]
    console.log(ret_3);  //[1,4,16,0,64]
    console.log(ret_4);  //[1,4,16,NaN,64]  即:数组中有“NaN”和“undefined”是都NaN; //null为0
    

      

    六. reduce

    //reduce()—— 为数组提供累加器,合并一个值
    //语法:arr.reduce(function(total, currentValue, currentIndex, arr), 初始值)
    
    let arr = [1,2,3,4,5,6,7,8,9];
    let ret = arr.reduce((tV, cV) => {
    
        return tV + cV;
    
    },0);
    
    let ret_2 = arr.reduce((tV, cV) => {
    
        return tV + cV;
    
    },10000);
    
    console.log(ret);  //45
    console.log(ret_2);  //10045
    

      

    七. reducerRight (用法与reducer大同)

    八. find

    //find() ——找到附和条件的数组成员,并返回该成员;找不到,返回'undefined'
    
    let arr = ['苹果',3,4,'good'];
    let ret = arr.find(v => {
        return v === '苹果';
    });
    
    console.log(ret); //苹果
    

      

    let arr = [61,-7.5,0,3,9,-0.5,88];
    let ret = arr.find(v =>{
      return v < 0;
    });
    
    console.log(ret); // -7.5;注意:是第一个元素!!!!!!
    

      

    九. findIndex

    //findIndex();—— 返回第一个附和条件的数组位置, 若不符合,返回-1;
    
    let arr = [1,3,5,7,8,9];
    let arr_2 = [1,3,5,7,9];
    
    
    let ret = arr.findIndex(v => {
        return v%2 === 0;
    });
    
    let ret_2 = arr_2.findIndex(v => {
        return v%2 === 0;
    });
    
    
    console.log(ret); //4
    console.log(ret_2);  //-1;即没有
    

      

    十. Array.keys()、Array.values()、Array.enties()

    //Array.keys()、Array.values()、Array.enties()
    //都是返回: Array Iterator
    
    let arr = ['foo','bar','neek'];
    
    for(let i of arr.keys()){
        console.log(i);  //0,1,2
    }
    
    for(let v of arr.values()){
        console.log(v);  //foo,bar,neek
    }
    
    
    //注意:是[],不是() !!!!
    for(let [i,v] of arr.entries()){
        console.log(i,v);  // 0 "foo", 1 "bar", 2 "neek"
    }
    

      

  • 相关阅读:
    swift 自学小计
    修改非空表字段类型Oracle
    DBNull.value
    修改SqlServer字段长度
    未在本地计算机上注册“Microsoft.Ace.OleDB.12.0”
    引用dll文件要复制到本地
    oracle与SqlServer连接串服务器地址
    生成几乎永不重复的串
    安装SqlServer2008后vs中dev控件消失
    Ios项目添加Pods
  • 原文地址:https://www.cnblogs.com/beesky520/p/9129564.html
Copyright © 2011-2022 走看看