JavaScript-hash数组for in 函数
什么是数组:内存中,连续存储多个数据的存储空间,再起一个名字为什么;
为什么:现实存储多个相关数据,都是集中存储,共同一个名字 程序=数据结构+算法
好的数据结构可以极大的提高程序的执行效率
何时使用数组,今后只要连续存储多个相关的数据都要用数组
如何使用数组: 创建数组: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 函数的更多相关文章
- [转] 有趣的JavaScript原生数组函数
在JavaScript中,可以通过两种方式创建数组,Array构造函数和 [] 便捷方式, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typeof操作符返回‘obj ...
- JavaScript原生数组函数
有趣的JavaScript原生数组函数 在JavaScript中,可以通过两种方式创建数组,构造函数和数组直接量, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typ ...
- 有趣的JavaScript原生数组函数
本文由 伯乐在线 - yanhaijing 翻译.未经许可,禁止转载!英文出处:flippinawesome.欢迎加入翻译小组. 在JavaScript中,可以通过两种方式创建数组,Array构造函数 ...
- JavaScript的作用;JS常见的三种对话框;==和===的区别;函数内部参数数组arguments在函数内部打印实参;JS的误区:没有块级作用域
JS:客户端(浏览器)脚本语言 弱类型 基于原型 事件驱动 不需要编译(直接运行) JS的作用:表单验证,减轻服务端的压力 添加页面动画效果 动态更改页面内容 Ajax网络请求 (一)常见的对 ...
- JavaScript中的Function(函数)对象
1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4. ...
- JavaScript Array数组方法详解
Array类型是ECMAScript中最常用的引用类型.ECMAScript中的数据与其它大多数语言中的数组有着相当大的区别.虽然ECMAScript中的数据与其它语言中的数组一样都是数据的有序列表, ...
- JavaScript从数组中删除指定值元素的方法
本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...
- JavaScript中数组操作常用方法
JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...
- javascript常用数组算法总结
1.数组去重 方法1: JavaScript //利用数组的indexOf方法 function unique (arr) { var result = []; for (var i = 0; i & ...
- javascript中数组的22种方法
× 目录 [1]对象继承 [2]数组转换 [3]栈和队列[4]数组排序[5]数组拼接[6]创建数组[7]数组删改[8]数组位置[9]数组归并[10]数组迭代[11]总结 前面的话 数组总共有22种方法 ...
随机推荐
- 转:Delphi各种Socket组件的模式和模型
Delphi的大多数书籍里面都没有提到delphi的各种socket通信组件的模式和模型,有的书只讲解了windows的socket模式和模型,并没有归纳各种组件采用的模型,所以我们的程序员并不知道如 ...
- ThinkPHP 学习记录
index.php //入口文件 define('APP_DEBUG',True); //开启调试模式 define('APP_PATH','./Application/'); //定义应用目录 re ...
- 『GreenPlum系列』GreenPlum 4节点集群安装(图文教程)
目标架构如上图 一.硬件评估 cpu主频,核数推荐CPU核数与磁盘数的比例在12:12以上Instance上执行时只能利用一个CPU核资源进行计算,推荐高主频 内存容量 网络带宽重分布操作 R ...
- Linxu学习之03_LInux文件与目录管理
同样只介绍相关命令 这节相关主要的命令有这些: 1.目录的相关操作 cd----切换目录 pwd----显示当前目录 mkdir----新建一个新的目录 rmdir----删除一个空的目录
- 种类并查集(POJ 1703)
1703 -- Find them, Catch them http://poj.org/problem?id=1703 题目大意:有2个敌对帮派,输入D a b表示a,b在不同帮派,输入A a b表 ...
- 用jsch.jar实现SFTP上传下载删除
java类: 需要引用的jar: jsch-0.1.53.jar 关于jsch有篇文章关于目录的问题写得非常好:http://www.zzzyk.com/show/9f02969327434a6c.h ...
- OpenShift:外国的免费云平台
二.安装openshift客户端 对于怎么安装openshift客户端,我就不说了,网上有很多教程,连官网也有他自己的教程. 官网教程:https://developers.openshift.com ...
- push
1:收到通知的那一刻,app的状态可能是未启动,前台以及后台 如果未启动,等待点击app的时候进行界面跳转的时候接收到通知(didFinishLaunchngWithOPtions) 如果是前台以及后 ...
- iOS button 里边的 字体的 摆放
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; button.titleEdgeInsets ...
- CentOS 6.3 安装 phpmyadmin
安装phpMyAdminphpMyAdmin是一个网络接口,通过它可以管理你的MySQL数据库.首先,我们使CentOS系统RPMForge软件库的phpMyAdmin,而不是官方的CentOS 6. ...