Javascript笔记——数组

关于数组有很多种的解释,在w3c中对数组的作用有如下的解释:

使用单独的变量名来存储一系列的值。

js不同于其他的编程语言(C语言、java),因为js是弱类型,所以js中的数组可以存储不同类型的值,同时js的数组十分灵活,还可以动态的改变数组的长度。下面将对js中的数组作一一介绍。



1、数组的创建

js创建数组一共有两种方式:

①、通过构造函数的方式的创建

var arr=new Array();//创建一个空数组
var arr2=new Array(5);//创建一个长度为5的数组
var arr3=new Array(1,new Date(),'a',true);//创建数组,并初始化数据,且数组内的值可以为任意类型
//如果调用Array传入的是一个参数,表示创建数组的长度,如果是多个,表示该数组初始化的数值

②、通过字面量的方式创建

var arr=[];//创建一个空数组
var arr=[1,new Date(),'a',true];//创建数组,并初始化数据,且数组内的值可以为任意类型



2、数组的长度与索引

想要知道数组的长度和上一章介绍的获取字符串长度的方法一致,通过arrObj.length来获取当前数组对象的长度。

var arr=[1,2,3];
console.log(arr.length);//3

通过数组的索引(index)可以访问数组某个位置的特定值。值得注意的一点是,数组的索引是从0开始的,且是连续的,当我们访问索引不存在的数组元素会返回undefined。

var arr=[1,2,3];
arr[100]=101;
console.log(arr.length);//101
console.log(arr[100]);//101
console.log(arr[99]);//undefined
console.log(arr);//[1,2,3,100:101];在console.log中会返回数组所有的元素,并且会自动省略索引处为undefined的元素

在上面的例子中可以看到,当存在索引为100的数组元素时,当前数组的长度为101,而不是4,所以我们可以知道数组length等于数组中最大的index+1。我们还可以知道数组的length属性是一个可写的属性,当我们强制把数组的length属性值修改为小于最大索引值的时候,数组会自动删除索引值大于等于length的一些元素。如果把length设置为大于最大索引值+1的时候,数组也会自动扩张,但是不会为数组添加新元素,只是在尾部追加空的空间。

var arr=[1,2,3,4];
arr.length=2;
console.log(arr);//[1,2]
arr.length=5;
document.write(arr);//1,2,,,    后面为三个undefined在console.log中不会显示,但是在document.write中会出现逗号,我们可以通过有几个逗号来判断当前数组的长度。

2、数组元素添加/删除

  • 基本方法

我们可以通过直接给指定索引赋值的方式来添加数组元素

var arr=[1,2,3];
arr[3]=4;
console.log(arr);//[1, 2, 3, 4]

我们知道在js中数组是对象类型的,可以使用删除对象属性的方法,通过delete 删除数组元素,但是使用delete只会删除当前元素,而不会删除其索引

delete arr[2];
console.log(arr[2]); //undefined
  • 通过栈和队列的方式

通过栈的方式:

arrObj. push([item1 [item2 [… [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度

arrayObj.pop(); //移除最后一个元素并返回该元素值

var arr=[1,2,3,4,5];
var a=a.push(0);
console.log(arr);//[1, 2, 3, 4, 5, 0]
console.log(a);//6
var b=a.pop();
console.log(arr);//[1, 2, 3, 4, 5]
console.log(b);//0



通过队列的方式:

arrObj.unshift([item1 [item2 [… [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度

arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移

var arr=[1,2,3,4,5];
var a=a.unshift(0);
console.log(arr);//[0,1, 2, 3, 4, 5]
console.log(a);//6
var b=a.shifit();
console.log(arr);//[1, 2, 3, 4, 5]
console.log(b);//0
  • 通过splice方法

JavaScript提供了一个splice方法用于一次性解决数组添加、删除。

splice:从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,且数组索引会重新生成,返回一个由所移除的元素组成的新 Array 对象。

arrayObj.splice(start, deleteCount, [item1[, item2[, … [,itemN]]]]);
start:必选项。指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。
deleteCount:必选项。要移除的元素的个数。
[item]:必选项。要在所移除元素的位置上插入的新元素。

var arr=[1,2,3,4,5];
var a=arr.splice(1,2);//删除元素
console.log(a);//[2,3]
console.log(arr);//[1,4,5]

var b=arr.splice(1,0,1,2,3);//添加元素
console.log(b);//[]
console.log(arr);[1, 1, 2, 3, 4, 5]



3、数组一些常用的方法

1、join:通过一个连接符把数组元素连接成一个字符串

var arr=[1,2,3];
var a=arr.join('-');
console.log(a);//1-2-3
console.log(typeof a);//string

2、concat:用于拼接数组

var arr1=[1,2,3];
var arr2=[4,5];
var newarr=arr.concat(arr2);
console.log(newarr);//[1,2,3,4,5]

3、slice:返回一个数组的一段
arr.slice(start, [end]);//使用方法和之前在字符串中介绍的slice基本一致

var arr=[1,2,3,4,5];
console.log(str.slice(2));//[3,4,5]
console.log(str.slice(0,3));//[1,2,3]
console.log(str.slice(5,0));//[]
console.log(str.slice(-5,-1));//[1,2,3,4]

4、sort:用于对数组进行排序
arrayobj.sort(sortfunction) ;
sortFunction:可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

var arr=['d','f','a',10,11,2,1,3];
arr.sort();
console.log(arr);//[1, 10, 11, 2, 3, "a", "d", "f"]

sortfunction可以传入两个参数(A、B)表示要进行比较的两个数,并且该函数必须有一个返回值,返回值的作用如下:

  1. 若返回值为负,则表示 A 在排序后的序列中出现在 B 之前。
  2. 若返回值为 0,则表示 A 和 B 具有相同的排序顺序。
  3. 若返回值为正,则表示 A 在排序后的序列中出现在 B 之后。
var a=[53,23,1,4,11,42,44];
a.sort(function(a,b){return a-b});//让数组从小到大排序
console.log(a);//[1, 4, 11, 23, 42, 44, 53]

5、reverse:用于将数组逆序

var a=[53,23,1,4,11,42,44];
a.reverse();
console.log(a);//[44, 42, 11, 4, 1, 23, 53]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值