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"
    }
    

      

  • 相关阅读:
    第6章学习小结
    第5章学习小结
    python输入年月日,得出已经过了多少天?
    报错:"Windows安装程序无法将Windows配置为在此计算机的……""windows无法完成安装。若要在此计算机上安装windows,请……"解决方案
    Magic Book Pro 2019 Intel版 BIOS升级失败-重启后没有升级过程,解决方案
    为Linux rm删除命令添加一次提示,防误操作;提高安全性。
    UOS博客被攻击后——追根溯源-Wordpress-反弹shell-本地提权-Ubuntu
    Snort-IPS-入侵防御系统安装及部署小记
    Loading ips.rules: FATAL: ips.rules:3 undefined variable name: RULE_PATH. Fatal Error, Quitting..,Snort导入规则集后无法启动,官网教程Ubuntu安装Snort执行snort -c /usr/local/etc/snort/snort.lua出现问题
    [闲聊]Mac-QQ:“这很漂亮,不是吗?”
  • 原文地址:https://www.cnblogs.com/beesky520/p/9129564.html
Copyright © 2011-2022 走看看