首页 > 代码库 > JavaScript-hash数组for in 函数

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>

 

JavaScript-hash数组for in 函数