什么是数组:内存中,连续存储多个数据的存储空间,再起一个名字为什么;
为什么:现实存储多个相关数据,都是集中存储,共同一个名字 程序=数据结构+算法
好的数据结构可以极大的提高程序的执行效率
何时使用数组,今后只要连续存储多个相关的数据都要用数组
如何使用数组: 创建数组: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中有且仅有八种基本数据类型,记住就行,共分为四类: 第一类:整型-->byte     short      int     long 第二类:浮点-->float    doub ...

  2. JS 計算文本域還能輸入多少個字符

    //輸入計數 //count:能輸入的數據總量    function Calculation(v, count) {        var span = $(v).next();        va ...

  3. Setup Apache + PHP + MySql on Windows 10

    The below steps recorded my experiences to setup the Apache + PHP + MySql on my Windows 10. 1. Downl ...

  4. Shell_参数替换(転)

    From: http://www.cnblogs.com/yjf512/archive/2013/06/03/3114803.html Bash中的$符号的作用是参数替换,将参数名替换为参数所代表的值 ...

  5. IDEA 用了maven后的 智能提示 不出现问题,项目的依赖包没有加载依赖库中的问题。

  6. Python 前端之JQuery

    查找: 选择器 筛选器 操作: CSS 属性 文本 事件: 优化 扩展: Form表单验证 Ajax: 偷偷发请求 www.php100.com/manual/jquery http://blog.j ...

  7. Changing SharePoint Default port ( 80 ) to another port ( 79 ).

      Introduction In this How-To I will change my port from 80 to 79, probably because I want to host s ...

  8. SHELL脚本攻略(学习笔记)--2.4 find

    转载请注明出处:http://www.cnblogs.com/f-ck-need-u/p/5916657.html   超级强大的find命令. find搜索是从磁盘搜索,而不是从数据库搜索. 2.4 ...

  9. VC++ MFC中如何将应用程序的配置信息保存到注册表中(二)

    在上一篇中介绍了几个写入注册表数据和读取注册表数据的接口,并介绍了使用方法. 这一片教你如何使得你的应用程序在下次打开时保持上一次关闭前的状态. 在上一篇添加的代码的基础上,要添加WM_CLOSE消息 ...

  10. 第2章 C#中的泛型

    2.1 理解泛型2.1.1 为什么要有泛型 并不一定要使用字符T作为类型参数的名称,也可以使用其他的字符,但习惯上使用T. 2.1.2 类型参数约束什么是“向下的强制转换(downcast)”?因为O ...