• JavaScript笔记之数组 keyword(存储和释放&堆栈 & 按值 引用)


    1.数组创建及初始化

          var obj=new Array();

          var arr=[];

          可以延伸为长度一定的,字面量定义数组

    2.堆栈 按值传递 引用类型

         数组是引用类型,不是值传递,

         栈:系桶自动分配和释放 ,比如函数的参数、局部变量 先进后出 一级缓存

         堆:一般由程序员分配释放,程序结束后系统回收 先进先出 二级缓存

    3.关联数组和索引数组

       关联数组即hash数组,本质上js底层,一切对象都是关联数组

       所以以下写法能产生运行结果,
        能运行结果:2
       var keys=[1,2,3,4];
       console.log(keys["1"]);

    4.删除数组里面重复元素:(常规解法&hash数组解法对比)

        1.常规方法思路:创建一个数组,然后用原有数组里面的元素和新数组里面的所有元素依次对比,若不同,就将此元素增加为新数组最后一个元素

                function f(arr) //实现删除数组内重复的元素
                { 
                var arrc=[];
                //拿出arr第一个元素,放入arrc数组第一个
                arrc[0]=arr[0];
                //遍历arr数组,从1开始,取出元素,与arrc(copy数组)中元素比较
                for(var i=1;i<arr.length;i++)
                {
                for(var j=0;j<arrc.length;j++)
                {
                if(arrc[j]==arr[i])
                break;//相等则结束此次的寻找,跳出循环
                }
                j==arrc.length&&(arrc[arrc.length]=arr[i]);//不相等则赋值给数组最后一个元素
                }
                return arrc;
                }
                console.log(f([1,2,2,1,4,5]));
         运行结果:[1,2,4,5]

    2.利用hash数组解决,利用hash的特点,大大提高效率  ,注意返回是字符类型,可以根据需要转换。

    function f1(arr){
                    //新建一个hash数组
                    var hash=[];
                    hash[arr[0]]=1;//初始化hash数组第一个元素
                    for(i=1;i<arr.length;i++)
                    {
                        if(hash[arr[i]]==undefined)
                        hash[arr[i]]=1;  //如果hash数组中arr[i]对应的元素未定义,说明未重复,则将其放入hash数组中
                    }
                    //结束遍历之后,取出hash数组
                    var back=[];
                    for(back[back.length] in hash);
                    return back;
                }
                console.log(f1([1,2,2,1,4,5]));
              运行结果:["1","2","4","5"]

    关于执行的效率上,特别当数据增多时,hash数组由于不需要去遍历数组查找,所以在执行效率上,将远远高于常规方法。

  • 相关阅读:
    机器视觉
    好心情
    什么是机器视觉?
    CY7C68013 USB接口相机开发记录
    CY7C68013 USB接口相机开发记录
    JVM调优总结(六)-新一代的垃圾回收算法
    JVM调优总结(五)-典型配置举例
    JVM调优总结(四)-分代垃圾回收详述
    JVM调优总结(三)-垃圾回收面临的问题
    JVM调优总结(二)-基本垃圾回收算法
  • 原文地址:https://www.cnblogs.com/godbutton/p/5926032.html
Copyright © 2020-2023  润新知