深度解析JS中的Array对象

Array类型是JS中很常见的一个类型,了解Array的用法也能有助于写出更高效的代码,下面是整理出的关于Array类型的所有知识点。

一 创建数组的几种形式

创建数组有两种形式:第一种是使用构造函数,如下:

var arr = new Array();
var arr = new Array(20); //可以声明数组长度
var arr = new Array("red","blue","green"); //可以在声明数组时传递已知项

第二种是使用数组字面量的形式:

var arr = [];
var arr = ["red","blue","green"];

在使用数组字面量创建数组的时候,数组项之间用逗号分隔,但是当最后一项后面也跟一个逗号时

var arr = ["red","blue","green",];

上面的声明方式在IE8下数组的长度为4,每一项的值为red,blue,green,undefined;

在IE9及以上则会忽略最后一个逗号,数组长度为3.

访问的时候可以使用方括号下标的语法来访问特定下标的数组项。

arr[0]; //red
arr[2]; //green

二 检测数组

检测是否为数组,ECMAScript5新增了如下方法

var arr = ["red","blue","green"];
if(Array.isArray(arr)){
	//是数组
}

三 转换方法

数组也是对象的一种,所有对象都具有toString()、toLocalString()、valueOf()方法,调用数组的toString()会返回数组每项的字符串以逗号拼接的形式返回的字符串,valueOf()返回的还是数组。


join()方法可以传递一个参数,将数组用传入的字符串分隔开来,默认是逗号。


四 数组中的栈方法

我们可以把数组想象成一个栈,它拥有栈方法push和pop

push:在数组尾部添加一项,返回新数组的长度

pop:弹出数组尾部最后一项,返回最后一位数组项


五 数组中的队列方法

我们也可以把数组想象成一个队列,他拥有队列方法shift和unshift

shift:在数组头部删除第一项,返回删除项

unshift:在数组头部添加一项,返回新数组长度


六 数组中的排序方法

数组中存在两个方法可以对原数组进行重新排序

sort:按照升序排序

reverse:翻转数组


在这里要注意的是sort方法比较的是字符串,即使数组的每一项是数组,也会先调用每一项的toString方法后才进行比较,所以对于下面的例子,结果并不是我们想要的:


遇到这种情况,我们就需要给排序方法传递一个比较函数。

function compare(value1,value2){
	return value1 - value2;
}

var arr = [1,2,3,10,4,5]

arr.sort(compare);

七 操作方法

数组中有一个slice方法,接收2个参数,起始位置下标和结束位置下标,会返回包含起始位置,到结束位置前一位置的所有项。


数组中还有个splice方法,用法很强大,可以对数组进行插入,删除,替换操作。

删除:传递两个参数,要删除的起始位置和要删除的项数。

插入:传递三个参数,起始位置,0,要插入的项,如果要插入多个,可以传第四第五个参数。

替换:传递三个参数,起始位置,要删除的项数,要替换的项,如果有多个,则传递多个参数。


八 位置方法

数组有两个查找位置的方法indexOf和lastIndexOf

indexOf:传递两个参数,要查找的项和查找起点位置的索引(可选)

lastIndexOf:和上面的参数一样,只不过从数组尾部开始查找



九 迭代方法

数组中提供了很多的迭代方法,明白这些方法也是高效操作数组的核心。

every:对数组中每一项运行给定函数,如果每一项都返回为true,则返回true

filter:对数组中每一项运行给定函数,返回该函数会返回true的项组成的数组。可以去看一下这个实例【面试】手写一个函数过滤一维数组中的所有假值

forEach:对数组中的每一项运行给定函数,没有返回值

map:对数组中的每一项运行给定函数,返回每次调用的结果组成的数组

some:对数组总的每一项运行给定函数,如果函数任一项返回true,就返回true

除了上面的迭代方法,Array对象还新增了两个归并数组的方法,reduce和reduceRight。归并方法会迭代数组中的所有项,然后构建一个最终返回的值。reduce从数组第一项开始,逐个遍历到最后,而reduceRight则从数组的最后一项开始,向前遍历。

reduce:接收4个参数,前一个值,当前值,项的索引,数组对象。

我们来看一个例子,求一个数组所有项的和。


还有一个更高阶的例子你可以点击这里查看【面试】手写一个函数实现求多个一维数组的交集

以上,就是JS中Array对象的所有方法,了解数组的操作有助于编写高效的代码,如果有任何问题,欢迎进行高质量交流。


猜你喜欢

转载自blog.csdn.net/u010176097/article/details/80882790
今日推荐