zoukankan      html  css  js  c++  java
  • JavaScript-hash数组for in 函数

     1 什么是数组:内存中,连续存储多个数据的存储空间,再起一个名字为什么;
     2 为什么:现实存储多个相关数据,都是集中存储,共同一个名字
     3 
     4 程序=数据结构+算法
     5 好的数据结构可以极大的提高程序的执行效率
     6 何时使用数组,今后只要连续存储多个相关的数据都要用数组
     7 如何使用数组:
     8 
     9 创建数组:3种
    10 一.创建空数组
    11 1.创建空数组:var arr=[];
    12 2.用new: var arr=new Array();
    13 
    14 二.创建数组同时,初始化数组的数据:
    15 1.数组直接量:var arr=[值1,2,3,4,5,6,....]
    16 2.用new:var arr=new Array(值1,2,3,4,5,6,.....)
    17 
    18 三.创建n个空房间
    19 
    20 数组的length属性:
    21 标识了数组中理论上的元素个数
    22 任何情况下:length永远是最大下标+1
    23 固定套路
    24 缩容:arr.length--
    25 1.最后一个元素:arr[arr.length-1]
    26 2.倒数第n个元素:arr[arr.length-n]
    27 3.追加新元素:arr[arr.length]=新值;
    28 特殊情况:js中的数组:3个不限制
    29 1.不限制元素的类型
    30 2.不限制下标越界
    31 获取元素值:
    32  下标越界:不报错,返回undefined
    33 3.不限制元素的个数
    34 设置元素值:
    35 1.最后一个元素:arr[arr.length-1]
    36 2.倒数第n个元素:arr[arr.length-n]
    37 3.追加新元素:arr[arr.length]=新值;
    38 下标越界:
    39 自动在指定值
    40 
    41 如果找不到,返回-1
    42 
    43 
    44 数组是引用类型的对象
    45 
    46 垃圾回收
    47 定期回收不再被任何变量引用的对象。释放内存。
    48 1.垃圾回收器:
    49 伴随主程序,并运行的一个小程序
    50 定期回收内存中的不在被任何变量引用的对象
    51 2.引用计数器:
    52 每个对象上,标记正在引用对象的变量个数的一个属性
    53 每多一个变量引用对象,计数器就+1
    54 如果一个变量通过赋值为null释放对对象的引用,则计数器-1
    55 直到计数器为0,表示不再有任何变量引用该对象,则该对象被回收/释放
    56 建议:如果使用完较大的对象,都要主动赋值为null。
    57 
    58 访问元素:
    59 lxr["name"]
    60 强调关联数组的length失效
    61 遍历不能用for循坏
    62    用for in循环
    63 其中in,表示依次取出数组中每个下标for(var key in hash){
    64     //key得到是每个元素的下标名称
    65     hash[key]当前元素值
    66 }
    67 
    68 关联数组/hash数组原理:
    69 hash算法:接收一个字符串,并计算出一个尽量不重复的序号
    70 相同的字符串,计算出的号总是一样的
    71 不同的字符串,计算出的号绝大多数不重复
    72 
    73 存入数据:
    74   hash算法接收一个字符串的下标明,计算出一个不重复的序号。将数据存储在序号对应的数组位置上
    75 获取数据:
    76 将下标名称交个hash算法,算出和存入时完全相同的序号,直接去序号位置查找元素
    77 优点,查找极快
    78 和数组中元素个数,以及元素在数组中的位置无关
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
    //    var lxr=[];
    //    lxr["name"]="林心如";
    //    lxr["math"]=83;
    //    lxr["chs"]=93;
    //    lxr["eng"]=80;
    //    console.log(lxr);
    //    console.log(lxr["math"]);
    //    //遍历
    //    for(var key in lxr){
    //        console.log(key+":"+lxr[key]);
    //    }
    ///*****************************************/
        var arr=['a','b','c','b','a'];
        function uniqual(arr){
            //遍历arr中每个元素,同时声明空数组uarr
        for (var i= 0,uarr=[]; i<arr.length;i++){
            //遍历uarr中每个元素
            for(var j=0;j<uarr.length;j++){
                //如果uarr中当前元素等于arr中当前元素
                if(uarr[j]==arr[i]){
                    break;//就退出循环 //遍历结束
                }
            }
            //如果j等于uarr的length
            if(j==uarr.length){
                uarr[j]=arr[i];//将arr中当前元素加入uarr中
            }//遍历结束
        }
            //返回uarr
        return uarr;
        }
        var uarr=uniqual(arr);
        console.log(String(uarr)); //abc
    </script>
    </body>
    </html>
  • 相关阅读:
    在SQLite中使用索引优化查询速度
    SQLite支持的SQL数据操作
    left (outer) join , right (outer) join, full (outer) join, (inner) join, cross join 区别
    深入理解Android内存管理原理(六)
    Merge Sorted Array
    Sort Colors
    Construct Binary Tree from Preorder and Inorder Traversal
    Binary Tree Postorder Traversal
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/longly/p/6228464.html
Copyright © 2011-2022 走看看