zoukankan      html  css  js  c++  java
  • JavaScript常见集合操作

    JavaScript常见集合操作


    集合的遍历

    FOR循环(效率最高)

    • 优点:JavaScript最普遍的for循环,执行效率最高
    • 缺点:无法遍历对象
    for(let i=0;i<array.length,i++){
        //operation
    }
    

    FOR…IN循环(效率较低)

    • 优点:唯一一个能够获取对象的属性名的遍历方式
    • 缺点:会将对象通过继承得到的属性一齐遍历,造成非预料的结果且效率较低
    //会访问非继承的属性
    for(attr in object){//attr作为属性名
        //object[attr]访问值
    }
    
    //避免访问继承的属性
    for(attr in object){//attr作为属性名
        if(object.hasOwnProperty(attr)){
            //object[attr]访问值        
        }
    }
    

    FOR…OF循环(效率较高)

    • 优点:能够快速访问非继承属性值
    • 缺点:需要ES6支持
    for(item of object){
        //item访问值
    }
    

    FOREACH方法(数组内置高阶方法,含义清晰)

    • 优点:函数式编程,简洁,快速领会代码含义
    • 缺点:无法对对象使用
    array.forEach(function(item,index,array)){
        //item为值
        //index为索引
        //array为被访问数组
    };
    

    TIPS:

    1. 在对对象进行遍历时,如不需要访问属性名选择for...of循环,如需访问属性名选择for...in循环
    2. 在对数组进行访问时,使用forEach得到较好的可读性,传统的for循环能够带来很高的性能及拓展性

    集合的操作

    提倡的想机器一样思考中,编程问题的解决被分为了输入,处理和输出

    处理,是对输入数据的处理,就可以分为从输入的数据中提炼出一定的有价值的数据,并对他们做出一些操作,得到希望得到的有价值的东西,并将他输出

    MAP映射

    Map映射是将输入的数据中有价值的东西提取出来,转化为更有利于处理的格式

    let dataAfterProcess = array.map(function(item,index,array){
        //item为值
        //index为索引
        //array为被访问数组
        return ;//返回dataAfterProcess中希望被添加的元素
    });
    

    REDUCE计算

    Reduce计算以提取好的数据输入,并获得最终的一个结果

    let output = array.reduce(function(accumulator, currentValue, currentIndex, array){
        //accumulator为输出结果
        //currentValue为遍历数组目前的值
        //currentIndex为遍历数组目前的索引
        //array为被访问数组
        return ;//返回希望累加的操作
    },0);//0为计算结果的初始值,默认为数组第一个元素
    

    TODO

    在完成JS练习中,我时常会遇到以下问题待解决:

    1. Map操作中,经常会遇到需要根据已有的目标数组的情况做出相应的映射操作,但目前尚未发现怎样在Map循环中检查已映射的目标数组?
    2. 为对象实现接口使对象也具有MapReduce操作的能力
  • 相关阅读:
    hdu 3037 Saving Beans fzu 2020 组合 hit 2813 Garden visiting hrbeu 组合数 fzu 1564 Combination
    PKU 2429 GCD & LCM Inverse
    Discrete Logging hunnu10590 pku2417 fzu 1352 hit 1928 zoj 1898
    HDUBased Game Theory
    Perfect Pth Powers zoj 2124 pku1730 hunnu10585
    More Divisors zoj 2562
    服务器的安全配置技巧总结
    sql server中datetime字段只取年月日如20060421,默认值如何设置?getdate()得到的是包含时分秒的时间
    获取当前打印机的名称、驱动程序、打印端口信息
    如何使用Delphi设计强大的服务器程序
  • 原文地址:https://www.cnblogs.com/Mr-liyang/p/7337388.html
Copyright © 2011-2022 走看看