JavaScript-hash数组for in 函数
Posted 极速小乌龟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 函数的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript-//FOR/IN循环。当使用for/in循环遍历关联数组时,就可以清晰地体会到for/in的强大之处。
JavaScript中in操作符(for..in)Object.keys()和Object.getOwnPropertyNames()的区别