数组Array、数组API
1、数组:批量管理多个数据的存储空间。
数组的作用:现实中,批量管理多个数据都是集中分组存放,良好的数据结构,可极大提高程序的执行效率!
优点:方便查找
2、创建数组:(4种方式)
(1)var 变量名=[]; 创建一个空数组
何时使用:暂时不知道数组中的元素内容时
(2)var 变量名=[值1,值2,...];
-->创建数组同时,初始化数组中的数据
(3)var 变量名=new Array(); 创建一个空数组
new:在window之外,创建一个新空间,保存多个数据
返回新空间的地址!
注意:Array:js中的内置数组类型,数组是应用类型的对象。
引用类型:对象不保存在变量本地,变量通过对象的地址使用对象。
(4)var 变量名=new Array(值1,值2,...);
3、使用数组中每个元素的值:
数组的存储结构:数组中每个数据都是一个元素,每个元素都有唯一的下标,数组自动为每个元素生成序号,序号从0开始,自增1。
最后一个元素的下标=元素个数-1;
语法:数组变量名[下标];
注意:输出对象中不存在的元素:undefined;无论数组中实际存储几个元素,数组的长度只和最后一个下标有关,数组长度=最后一个下标+1。
4、索引数组和关联数组
索引数组:下标自动从0开始为每个元素顺序编号;
关联数组:可为每个元素自定义下标;
创建关联数组(hash数组):
var arr=[];
arr.ename="Tom";
arr.age=20;
arr.sex="男";
关联数组能够“快速”、“精确”的查找数组中的一元素;
注意:JS中一切都是关联数组;关联数组下标没有规律;length无效。
5、二维数组:数组中的元素又引用了另一个数组对象。
使用:保存横行竖列、具有上下级包含的数据;
创建:eg
var arr=[
["保定","唐山","秦皇岛"],
["郑州","洛阳","驻马店"]
];
6、遍历数组
(1)遍历索引数组:
var arr=[];
for(var i=0;i<arr.length;i++){……}
(2)遍历关联数组:
var arr=[];
for(var key in arr){
arr[key]=value;
}
(3)遍历二维数组:
var arr=[ [] ,[] ];
for(var row=0;row=arr.length;row++){
for(var col=0;col=arr[row].length;col++){
arr[row][col];
}
}
7、数组API
(1)、arr.sort([比较器函数对象]);
比较器函数:compare=function(a,b){return a-b}
arr.sort(comprare);
(2)、栈和队列:JS中没有专门的栈和队列的类型,都是用数组模拟出来
栈:一端封闭,只能从另一端进出的数组
使用:数组只能从一端进出
末尾入栈:arr.push(新值,……);
末尾出栈:var e=arr.pop();
从头入栈:arr.unshift();
从头出栈:var e=arr.shift();
(3)、将数组转化为字符串
arr.toString();输出格式固定:中括号包裹,逗号分隔
arr.join([“分隔符”]):默认等同于toString();
(4)、拼接和截取子数组
var newArr=arr.contact(另一个数组,值1,值2);
原数组不变,返回拼接后新数组对象!
(5)、截取字数组
var subArr=arr.slice(stari,end[i+1]);//截取arr数组中从starti位置开始,到endi位置结束的元素组成新的子数组返回。含头不含尾。
splice:插入:arr.splice(插入位置,0,新值1,新值2……);
删除:arr.splice(开始位置,删除个数);
替换:arr.splice(开始位置,删除个数,新值1,……);
(6)、翻转:arr.reverse();
8、排队抢火车票(例子)
var tickets=10;
var people=[];
for(var i=0;i<10;i++){
people.push("乘客"+i);
}
console.log(people);
while(tickets>0){
var p=people.shift();
tickets--;
console.log(p+"抢到了;"+"还剩下"+tickets+"张票");
}
console.log(people+"没抢到票");
9、十进制转化为二进制
/*十进制整数转二进制:
十进制反复/2,记录每次的余数
直到商=1时,将商和最后一次余数都计入结果
将所有余数颠倒,就是二进制表示
*/
function toBin(n){
var reslut=[];
while(n>1){
reslut.push(n%2);
n=parseInt(n/2);
}
reslut.push(1);
return reslut.reverse().join(' ');
}
var n=110;
console.log(tobin(n));
console.log(n.toString(2));//对比
数组Array、数组API的更多相关文章
- JavaScript的json和Array及Array数组的使用方法
1.关于json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集.也可以称为数据集和数组类似,能够存数据! //Ar ...
- C#中数组Array、ArrayList、泛型List<T>的比较
在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序 ...
- JavaScript中对数组和数组API的认识
JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...
- Java一维数组二维数组详解API
所谓数组,是有序的元素序列. 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编号称为下标 ...
- 【Java】数组Array
Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...
- 了解PHP中的Array数组和foreach
1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组 . 2.例子:一般的数组 这里,我 ...
- Swift3 - String 字符串、Array 数组、Dictionary 字典的使用
Swift相关知识,本随笔为 字符串.数组.字典的简单使用,有理解.使用错误的地方望能指正. ///************************************************** ...
- Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别
ArrayList和Vector的区别ArrayList与Vector主要从二方面来说. 一.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步 ...
- go 数组(array)、切片(slice)、map、结构体(struct)
一 数组(array) go语言中的数组是固定长度的.使用前必须指定数组长度. go语言中数组是值类型.如果将数组赋值给另一个数组或者方法中参数使用都是复制一份,方法中使用可以使用指针传递地址. 声明 ...
随机推荐
- springBoot之配置文件的读取以及过滤器和拦截器的使用
前言 在之前的学习springBoot中,成功的实现了Restful风格的基本服务.但是想将之前的工程作为一个项目来说,那些是仅仅不够的.可能还需要获取自定义的配置以及添加过滤器和拦截器.至于为什么将 ...
- hdu 2047递推
A[N]表示以E或者F结尾的情况下的方案数,B[N]表示以O结尾的情况下的方案数,F[N]=3*A[N-1]+2*B[N-1] 同时,A[N]=2*B[N-1]+2*A[N-1],B[N-1]=A[N ...
- Minikube之Win10单机部署
Kubernetes(k8s)是自动化容器操作的开源平台,基于这个平台,你可以进行容器部署,资源调度和集群扩容等操作.如果你曾经用过Docker部署容器,那么可以将Docker看成Kubernetes ...
- JavaScript实现排序二叉树的相关算法
1.创建排序二叉树的构造函数 /** * 创建排序二叉树的构造函数 * @param valArr 排序二叉树中节点的值 * @constructor */ function BinaryTree(v ...
- 【java学习笔记】正则表达式
一.正则表达式 1.预定义字符集 . 表示任意一个字符 \d 表示任意一个数字 \w 表示任意一个单词字符(只能是数字.字母.下划线) \s 表示任意一个空白字符(\t\r\n\f\x0B) \D ...
- ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(下篇)
上一篇<ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(上篇)>文章介绍了ASP.NET MVC模型绑定的相关组件和概念,本章将介绍Controller在执行时是如何通过这 ...
- 笔记︱信用风险模型(申请评分、行为评分)与数据准备(违约期限、WOE转化)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 巴塞尔协议定义了金融风险类型:市场风险.作业风 ...
- FusionCharts Marimekko图
1.Marimekko静态页面 Marimekko.html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//E ...
- Java正则表达式语法
Java正则表达式 表达式意义: 1.字符 x 字符 x.例如a表示字符a \\ 反斜线字符.在书写时要写为\\\\.(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在 ...
- vxWorks6.6 N270 D525 cpu的bsp配置总结
对硬盘的操作 使用SATA硬盘,分区,引导区(VxC:)必须格式化为FAT(FAT16)格式,所以该分区大小有限制,不能超过4G(4G大小带测试),设置C:为"活动的": 主机上安 ...