数组的常用方法

数组的常用方法

检测

1、instanceof操作符,用来检测值究竟是哪种引用类型的实例
var arr = new Array();
var arrValue = arr instanceof Array;
	alert(arrValue);
2、Array.isArray()方法。由于instanceof操作符假定单一的全局环境,为了满足多个窗口的情况ECMAScript5新增了该方法
var arr = new Array();
var arrValue = Array.isArray(arr);
	alert(arrValue);

join()方法

以指定字符做连接字符,依次连接数组中的项并返回构成的字符串。在不传入参数或者传入参数为undefined时以","拼接。
var numArr = ["1","2","3"];
alert(numArr.join()); //1,2,3
alert(numArr.join(undefined)); //1,2,3
alert(numArr.join("*")); //1*2*3

栈与队列方法

栈方法,“后进先出”。push()方法为数组末尾添加若干项并返回新数组长度,pop()方法从数组末尾取出一项,并返回取出的项。
var colorArr = ["yellow","orange"],
	count = colorArr.push("white","black");
	alert(count); //4
var item = colorArr.pop();
	alert(item); //black
队列方法,“先进先出”。shift()方法从数组开头取出一项,并返回该项。配合push()方法可以实现数组的队列操作。
var colorArr = ["yellow","orange"],
	count = colorArr.push("white","black");
	alert(count); //4
var item = colorArr.pop();
	alert(item); //black
unshift()方法,与push()方法类似。只不过是从数组开头添加若干项,并返回新数组长度。搭配pop()方法可以实现数组的反向队列操作。所说unshift()方法效率较数组其他方法不高,所以实际中还是慎用。
var colorArr = ["yellow","orange"],
	count = colorArr.unshift("red","green","blue");
	alert(count); //5
var item = colorArr.pop();
	alert(item); //orange

排序方法

reverse()方法,将数组反转排序。
var numArr = [1,2,3,4,5,6];
	numArr.reverse();
	alert(numArr); //6,5,4,3,2,1
sort()方法,用于将数组按照某种顺序排列,比如递增或递减。
var numArr = [1,22,3,2,26];
numArr.sort();
alert(numArr); //1,2,22,26,3

从上面可以看出sort()方法是按字符串进行比较的,因此要想按照想象的比较需要传入一个比较函数

function compare(value1, value2) {
	if (value1 < value2) {
   	 return -1;
	} else if (value1 > value2) {
 	 return 1;
	} else {
 	   return 0;
 }
} 
var numArr = [1,22,3,2,26];
	numArr.sort(compare);
	alert(numArr); //1,2,3,22,26

单纯只是数值比较的话可以简化

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

操作方法

splice()、concat()以及slice()

数组的操作类方法主要有三个,splice()、concat()以及slice()方法。我们首先来介绍下splice()方法,因为它应该算是最强大的数组方法了。

splice(a,b,c)接收三个参数,a代表执行操作的位置,b代表在操作位置执行删除操作的次数,c代表需要插入操作位置的值,可以是多个,返回值为删除的数组项。根据a,b,c三个参数传入的情况不同可以衍生出三种对数组的操作。

删除:

var nameArr = ["Tom","Lily","Sam","Bill"],
    item = nameArr.splice(1,2);
	alert(nameArr); //Tom,Bill
	alert(item); //Lily,Sam

省略参数c即为对数组的删除操作。但是这里要注意删除这个过程是怎么样进行的,首先找到数组中位置1即"Lily",当执行一次删除操作后原本位于位置2的"Sam"上前补位到位置1,之后执行第二次删除操作。理解这个过程后理解插入与替换方法变得更加容易。

插入:

item = nameArr.splice(1,0,"Kobe","James");
alert(nameArr); //Tom,Kobe,James,Bill
console.log(item); //空数组

令参数b为0,即对位置1不执行删除操作,只插入"Kobe","James"两项。

替换:

item = nameArr.splice(2,2,"Fanfan");
alert(nameArr); //Tom,Kobe,Fanfan
alert(item); //James,Bill

先对位置2进行两次删除操作,移除并返回"James","Bill"两项,然后在位置2添加"Fanfan"。

当完全理解了splice()方法后,就可以把它当成一种操作。分成三种只是方便理解。

concat()方法,用于基于当前数组创建一个新数组。简单来说就是首先创建原数组的一个副本,然后将接收的参数添加到数组末尾,返回新数组。
var arr = [1,2,3],
arr2 = arr.concat([4,5]),
arr3 = arr.concat(6,7),
arr4 = arr.concat(8,[9,10]);
alert(arr); //1,2,3
alert(arr2); //1,2,3,4,5
alert(arr3); //1,2,3,6,7
alert(arr4); //1,2,3,8,9,10
从上例可以看出,传入的参数不论是单独的值还是数组或者二者混合,都可以拼接成新数组。

slice()方法,基于当前数组中的若干项创建一个新的子数组。接收两个参数,第一个参数为起始位置,第二个参数为结束位置。返回从起始位置到结束位置前一项组成的数组,如果不指定结束位则到数组末尾。

var arr = [1,2,3,4,5,6,7,8,9,10],
    arr2 = arr.slice(3),
    arr3 = arr.slice(3,8);
	alert(arr); //1,2,3,4,5,6,7,8,9,10
	alert(arr2); //4,5,6,7,8,9,10
	alert(arr3); //4,5,6,7,8

摘自:https://www.cnblogs.com/ghost-xyx/p/4440362.html

posted @ 2019-03-28 11:22  娜辉  阅读(216)  评论(0编辑  收藏  举报