什么是数组:内存中,连续存储多个数据的存储空间,再起一个名字为什么;
为什么:现实存储多个相关数据,都是集中存储,共同一个名字 程序=数据结构+算法
好的数据结构可以极大的提高程序的执行效率
何时使用数组,今后只要连续存储多个相关的数据都要用数组
如何使用数组: 创建数组:3种
一.创建空数组
1.创建空数组:var arr=[];
2.用new: var arr=new Array(); 二.创建数组同时,初始化数组的数据:
1.数组直接量:var arr=[值1,2,3,4,5,6,....]
2.用new:var arr=new Array(值1,2,3,4,5,6,.....) 三.创建n个空房间 数组的length属性:
标识了数组中理论上的元素个数
任何情况下:length永远是最大下标+1
固定套路
缩容:arr.length--
1.最后一个元素:arr[arr.length-1]
2.倒数第n个元素:arr[arr.length-n]
3.追加新元素:arr[arr.length]=新值;
特殊情况:js中的数组:3个不限制
1.不限制元素的类型
2.不限制下标越界
获取元素值:
下标越界:不报错,返回undefined
3.不限制元素的个数
设置元素值:
1.最后一个元素:arr[arr.length-1]
2.倒数第n个元素:arr[arr.length-n]
3.追加新元素:arr[arr.length]=新值;
下标越界:
自动在指定值 如果找不到,返回-1 数组是引用类型的对象 垃圾回收
定期回收不再被任何变量引用的对象。释放内存。
1.垃圾回收器:
伴随主程序,并运行的一个小程序
定期回收内存中的不在被任何变量引用的对象
2.引用计数器:
每个对象上,标记正在引用对象的变量个数的一个属性
每多一个变量引用对象,计数器就+1
如果一个变量通过赋值为null释放对对象的引用,则计数器-1
直到计数器为0,表示不再有任何变量引用该对象,则该对象被回收/释放
建议:如果使用完较大的对象,都要主动赋值为null。 访问元素:
lxr["name"]
强调关联数组的length失效
遍历不能用for循坏
用for in循环
其中in,表示依次取出数组中每个下标for(var key in hash){
//key得到是每个元素的下标名称
hash[key]当前元素值
} 关联数组/hash数组原理:
hash算法:接收一个字符串,并计算出一个尽量不重复的序号
相同的字符串,计算出的号总是一样的
不同的字符串,计算出的号绝大多数不重复 存入数据:
hash算法接收一个字符串的下标明,计算出一个不重复的序号。将数据存储在序号对应的数组位置上
获取数据:
将下标名称交个hash算法,算出和存入时完全相同的序号,直接去序号位置查找元素
优点,查找极快
和数组中元素个数,以及元素在数组中的位置无关
<!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 函数的更多相关文章

  1. [转] 有趣的JavaScript原生数组函数

    在JavaScript中,可以通过两种方式创建数组,Array构造函数和 [] 便捷方式, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typeof操作符返回‘obj ...

  2. JavaScript原生数组函数

    有趣的JavaScript原生数组函数 在JavaScript中,可以通过两种方式创建数组,构造函数和数组直接量, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typ ...

  3. 有趣的JavaScript原生数组函数

    本文由 伯乐在线 - yanhaijing 翻译.未经许可,禁止转载!英文出处:flippinawesome.欢迎加入翻译小组. 在JavaScript中,可以通过两种方式创建数组,Array构造函数 ...

  4. JavaScript的作用;JS常见的三种对话框;==和===的区别;函数内部参数数组arguments在函数内部打印实参;JS的误区:没有块级作用域

    JS:客户端(浏览器)脚本语言 弱类型 基于原型 事件驱动 不需要编译(直接运行)   JS的作用:表单验证,减轻服务端的压力 添加页面动画效果  动态更改页面内容  Ajax网络请求 (一)常见的对 ...

  5. JavaScript中的Function(函数)对象

    1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4. ...

  6. JavaScript Array数组方法详解

    Array类型是ECMAScript中最常用的引用类型.ECMAScript中的数据与其它大多数语言中的数组有着相当大的区别.虽然ECMAScript中的数据与其它语言中的数组一样都是数据的有序列表, ...

  7. JavaScript从数组中删除指定值元素的方法

    本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...

  8. JavaScript中数组操作常用方法

    JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...

  9. javascript常用数组算法总结

    1.数组去重 方法1: JavaScript //利用数组的indexOf方法 function unique (arr) { var result = []; for (var i = 0; i & ...

  10. javascript中数组的22种方法

    × 目录 [1]对象继承 [2]数组转换 [3]栈和队列[4]数组排序[5]数组拼接[6]创建数组[7]数组删改[8]数组位置[9]数组归并[10]数组迭代[11]总结 前面的话 数组总共有22种方法 ...

随机推荐

  1. 黑马程序员_JAVA之交通灯管理系统

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.一.需求:模拟实现十字路口的交通灯管理系统逻辑,具体需求如下:  1.异步随机生成按照各个路 ...

  2. QQ粘性布局

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  3. 【caffe-windows】 caffe-master 之 matlab接口配置

    平台环境: win10 64位 caffe-master  vs2013 Matlab2016a 第一步: 打开\caffe-master\windows下的CommonSettings.props文 ...

  4. 纸上谈兵:伸展树(splay tree)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们讨论过,树的搜索效率与树的深度有关.二叉搜索树的深度可能为n,这种情况下,每次 ...

  5. 解决ubuntu中apache2的url大小写敏感问题。

    cd /etc/apache2/mods-enabled ln -s ../mods-available/speling.load speling.load ln -s ../mods-availab ...

  6. ASP.NET实现大文件下载

    https://support.microsoft.com/zh-cn/kb/812406 http://www.cnblogs.com/luisliu/p/4253815.html 当我们的网站需要 ...

  7. 转载:mysql ODBC 在64位下提示找不到odbc驱动问题

    在64位机器上,如果你想要连接32位mysql ,一般会安装mysql connector/ODBC 64位,并在配置ODBC数据源测试中连接正常,但在程序连接,如ASP.asp.net.VB.Del ...

  8. JQuery mobile 实例 api

    http://www.w3school.com.cn/jquerymobile/jquerymobile_examples.asp

  9. debian vi

    这次用DigitalOcean VPS发现vi的方向键变成字母,没办法正常使用,搜索了下找到了解决办法. 1 vi /etc/vim/vimrc.tiny 找到set compatible改为set ...

  10. 亚马逊开放机器学习系统源代码:挑战谷歌TensorFlow

    北京时间5月17日上午消息,亚马逊在开源技术领域迈出了更大的步伐,宣布开放该公司的机器学习软件DSSTNE的源代码.这个最新项目将与谷歌的TensorFlow竞争,后者已于去年开源.亚马逊表示,在缺乏 ...