首页 > 编程语言 > 详细

JS数组

时间:2019-11-03 21:44:03      阅读:83      评论:0      收藏:0      [点我收藏+]

一、什么是数组

内存中连续多个数据的数据结构,再起一个统一的名字。

数组也是一个对象,和我们普通的对象功能类似,也是用来储存一些值的。不同的是普通对象是使用字符串作为属性名的,而数组使用数字作为索引操作元素。

数组的存储性能比普通对象要好,在开发中我们经常使用数组来存储一些数据。

使用 typeof 检查数组的数据类型时就会返回 object 对象类型。

技术分享图片

为什么要使用数组:

普通的变量只能存储一个数据程序(数据程序 = 数据结构 + 算法

算法:解决问题的步骤

数据结构:数据在内存中的存储结构,好的数据结构可以极大的提高程序的执行效率

什么时候使用数组:

只要存储多个连续的数据就使用数组

 

二、创建数组

(一)创建空数组:2种

1、数组直接量:

语法: var arr = [ ];

var arr = [ ];    //意味着创建一个不包含元素的数组

var arr = [12,13,14];  //意味着创建一个包含三个元素的数组

2、使用new

语法:var arr = new Array();

var arr = new Array();  //定义一个不包含元素的数组

var arr = new Array(‘Aa‘,‘Bb‘,‘Cc‘);  //定义一个三个字符串元素的数组

在创建数组时,还不知道数组里面的元素内容时。

 

(二)创建数组的同时初始化

1、数组直接量:var arr = [元素1,元素2…];

2、用 new Array方法:var arr = new Array(元素1,元素2,…)

在创建数组时,如果已经知道了数组里面的元素内容,就可以使用创建数组并同时进行初始化这种方式。

var array = [111,222,333];

var array = new Array(111,222,333);

 

(三)先声明空数组,再添加元素

直接量

var arr = [ ];
arr[0] = ‘aaa‘;
arr[1] = ‘bbb‘;

new Array方法

var arr = new Array();
arr[0]  = ‘安安‘;
arr[1] = 111;
arr[3] = true;

上面这种既有字符串又有数字,还有布尔值的数组,称之为混合类型的数组

 

三、访问数组中的元素

 元素:数组中的每个数据都是元素

如何访问:下标,数组中唯一标识每个元素储存位置的序号。

索引:从0开始的整数就是索引;索引(index)一个索引对应一个值,这一个整体称之为元素。

特点:从0 开始,连续不重复

何时:如果想访问数组元素只能,使用下标

语法:数组名[ i ] (用法和单个变量完全一样)

 

数组GET操作和SET操作

(一)设置数组元素的值——SET

1、向数组中添加元素

语法:数组[索引] = 值;

var  arr = new  Array();
arr[0] = 10;
arr[1] = 33;
arr[2] = 22;
arr[3] = 44;
console.log(arr);

注意:10在索引为0的位置,33在索引为1的位置,索引都是从0开始的

技术分享图片

 

 2、向数组中修改添加元素

 var ss = [98,22,100];
 ss[2] = 60;  //将值为100的元素重新赋值为60;
ss[3] = 75;  //在元素的尾部添加一个新的元素;

注意:索引从0 开始,最大到 length-1;

技术分享图片

 

(二)获取数组元素的值——GET

语法: 数组[索引]

1、读取数组中的元素

注意:如果读取不存在的索引,他不会报错而是返回 undefined

var  arr = new  Array();
arr[0] = 10;
arr[1] = 33;
arr[2] = 22;
console.log(arr[2]);
console.log(arr[4]);

技术分享图片

 

(三)数组的 length 属性:

(获取数组的元素个数)

记录了数组中理论上的元素的个数,length 的值永远都是最大下标 +1

语法数组.length

 length 设置或是获取数组的长度 (检查有几个元素,元素个数)

1、对连续的数组使用length,可以获得数组中元素的个数(连续的数组——缩印按照顺序排列0、1、2、3、…)

var  arr = new  Array();
arr[0] = 10;
arr[1] = 33;
arr[2] = 22;
arr[3] = 44;
console.log(arr.length);

技术分享图片

2、对非连续的数组,length的数组长度为最大索引+1(假设最大索引是98,那么数组.length的结果就是99)

var  arr = new  Array();
arr[0] = 10;
arr[1] = 33;
arr[2] = 22;
arr[3] = 44;
arr[10]= 99;
console.log(arr.length);
console.log(arr);

技术分享图片

 

(修改length)

1、如果修改的 length 大于数组原来长度,则多出的部分会空出来

var  arr = new  Array();
arr[0] = 10;
arr[1] = 33;
arr[2] = 22;
arr[3] = 44;
arr.length = 10;
console.log(arr.length);
console.log(arr);

技术分享图片

 

2、如果修改的 length 小于原长度,则多出的元素会被删除(可以通过length来删除元素)

var  arr = new  Array();
arr[0] = 10;
arr[1] = 33;
arr[2] = 22;
arr[3] = 44;
arr.length = 2;
console.log(arr.length);
console.log(arr);

技术分享图片

 

(向数组最后一个位置添加元素)

语法: 数组[数组.length] = 值;

注意: 如果 [ ] 里不加数组名,那么就是到全局中去找length(假设数组的最大索引为3,就要往4加。如果想往数组再添加顺序索引内容,就要比最大索引 + 1)。

var  arr = new  Array();
arr[0] = 10;
arr[1] = 33;
arr[2] = 22;
arr[3] = 44;
arr[arr.length] = 77;
arr[arr.length] = 88;
arr[arr.length] = 99;
console.log(arr.length);
console.log(arr);

技术分享图片

 

四、数组遍历

遍历数组的元素,通常选用 for 循环语句,元素的检索(下标)作为循环变量

元素索引从0开始,到 length-1 结束

var arr = [12,13,14,15,16]
for(var i = 0;i<arr.length;i++){
    arr[i] += 10;
}
console.log(arr);

技术分享图片

 length总结:

获得数组的最后一个元素arr[arr.length - 1]

获得倒数第n个元素的位置arr[arr.length - n]

数组缩容:减小  arr.length 的数值,会删除结尾的多余元素

遍历数组:依次访问数组中的每个元素,对每个元素执行相同的操作

for(var i = 0;i<arr.length;i++){
    arr[i]  //当前正在遍历的元素
}

 

五、数组类型

(一)索引数组:下标为数字的数组

数组特殊的特点:三个不限制

1、不限制数组元素的个数:长度可变

2、不限制下标越界

获取元素:不报错!返回undefined

修改元素值:不报错!自动在指定位置创建新元素,并自动修改length属性值为最大索引 +1;

修改length属性为最大索引 +1;

如果索引不连续的数组——稀疏数组

3、不限制元素的数据类型

 

(二)关联数组:可以自定义下标名称的数组

为什么使用关联数组

索引数组中的下标没有明确的意义;

hash数组可以实现元素的快速增删,查找,

什么时候使用关联数组

只有希望每个元素都有专门的名称的时候,就使用关联数组;

 

1、关联数组的创建方式

如何创建关联数组(两步)

第一步:创建空数组

第二步:向空数组中添加新元素,并且自定义下标名称。

var name = [ ];
name[‘xiaoming‘] = ‘小明‘;
name[‘hanhan‘] = ‘憨憨‘;

2、关联数组的遍历

由于关联数组的 length 属性值无法获取其中元素的数量,所以遍历关联数组只能使用for … in循环

for( var key in hash){
       key //只是元素的下标名
       aa[key] //当前元素值
}

 

 (三)索引数组和关联数组的对比

索引数组:

1、以字符串输出

2、索引是数字

3、length属性有效

4、访问元素,都用数组名[‘索引‘]

5、可以 for 循环遍历

关联数组:

1、不能使用字符串输出

2、下标是自定义的字符串

3、length属性失效(=0)

4、不能用 for 循环遍历,需要使用 for … in循环

 索引数组和关联数组的查找

技术分享图片

 总结:如果只要希望快速查找元素的时候,就使用hash数组

 

JS数组

原文:https://www.cnblogs.com/nyw1983/p/11788891.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!