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>
  • 相关阅读:
    UUID含义及ubuntu配置系统默认JDK
    MYSQL 问题小总结
    纯CSS3实现常见多种相册效果
    Docker Api 实测
    Dijkstra with priority queue 分类: ACM TYPE 2015-07-23 20:12 4人阅读 评论(0) 收藏
    hash值的计算与转换 分类: ACM TYPE 2015-05-07 17:49 36人阅读 评论(0) 收藏
    NYOJ
    进制转换函数 2015-02-15 09:41 32人阅读 评论(0) 收藏
    操作系统图解 2015-02-03 23:44 71人阅读 评论(0) 收藏
    [kuangbin带你飞]专题一 简单搜索
  • 原文地址:https://www.cnblogs.com/longly/p/6228464.html
Copyright © 2011-2022 走看看