什么是数组:内存中,连续存储多个数据的存储空间,再起一个名字为什么;
为什么:现实存储多个相关数据,都是集中存储,共同一个名字 程序=数据结构+算法
好的数据结构可以极大的提高程序的执行效率
何时使用数组,今后只要连续存储多个相关的数据都要用数组
如何使用数组: 创建数组: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. ubuntu下python连接mysql

    apt-get install python-mysqldb

  2. JAVA设计模式之迭代子模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述迭代子(Iterator)模式的: 迭代子模式又叫游标(Cursor)模式,是对象的行为模式.迭代子模式可以顺序地访问一个聚集中的元素而不 ...

  3. Android.mk的用法和基础【转】

    一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个 ...

  4. 剑指Offer:面试题28——字符串的排列(java实现)(待序)

    问题描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 结果请按字母 ...

  5. 写CSS的布局

    刚写页面的时候写CSS觉得一个选择器中的每个声明分别占一行看起来舒服些,但随着页面大了,写的东西多了,看起来就很乱了.所以每个声明连着写其实更加好些

  6. FMDB最简单的教程-3 清空数据表并将自增字段清零

    [db executeUpdate:@"DELETE FROM MemberInfo"]; [db executeUpdate:@"UPDATE sqlite_seque ...

  7. skiplist

    §1 Skip List 介绍 Skip List是一种随机化的数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(log n)平均时间).基本上, 跳跃列表是对有序的链表增加上 ...

  8. 系统中定义VOMapping的时候注意大小写

    VOMapping中的第一个参数一定要严格按照大小写(缩写的单词容易错): 例如:VO中的定义: private CntVOEnums.EnumIVRStage ivrStage; 实际反射找这个字段 ...

  9. ArcGIS生成根据点图层生成等值面并减小栅格锯齿的操作步骤

    一.打开ArcMAP并加载上相应的点图层和边界面图层 二.ArcToolbox--Spatial Analyst工具--差值分析--克里金法(根据不同的情况选择不同的算法,这次的处理实际上使用的是样条 ...

  10. numpy.concatenate

    import numpy as np a = np.array([[1, 2], [3, 4]]) a.shape Out[3]: (2, 2) b = np.array([[5, 6]]) b.sh ...