JavaScript-Array数组

Array类型

ECMAScript数组的每一项可以保存任何类型的数据。可以用第一个位置可以保存字符串,用第二个位置可以保存数值,用第三个位置来保存对象。
ECMAScript数组的大小是可以动态调整的,可以随着数据的添加自动增长以容纳新增数据。

创建数组

创建数组的基本方式有两种。第一种是使用Array构造函数,如:

var colors = new Array();
var colors = new Array(20);  //创建length值为20的数组。
var colors = new Array("red", "blue", "green");  //直接传递数组中的包含项

另外 ,在使用Array构造函数时也可以省略new 操作符。
var colors = Array(3);
创建数组的第二种基本方式是使用数组字面量表示法。数组字面量由一对包含数组项的方括号表示,多个数组项以逗号隔开,如:

var colors = ["red", "blue", "green"];
var name = [];

当把一个值放在超出当前数组大小的位置上时,数组就会重新计算其长度值,即长度值(length)等于最后一项的索引加1

转换方法

所有对象都具有toLocalString()、toString()和valueOf()方法。

valueOf()方法是返回数组本身。
toString()方法是返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。

alert()要接受字符串参数,所以它会在后台调用toString()方法,由次会得到与直接调用toString()方法相同的结果。

toLocalString()方法也经常返回与toString()和valueOf()方法相同的的值。
使用 join()方法,则可以使用不同的分隔符来构建这个字符串。join()方法只接受一个参数

var colors = ["red", ''green", ''blue"];
alert(colors,join(" , "));     //red, green, blue
alert(colors,join(" || "));     //red||green||blue

栈方法

push()方法可以接受任意数量的参数,把他们逐个添加到数组末尾,并返回修改后的数组的长度
pop()方法则从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

队列方法

push()向数组末端添加项
shift()方法能够移除数组第一项并返回该项,同时数组的长度减一。
unshift()方法是在数组前端添加任意个项并返回新数组的长度。
使用 unshift()方法和 pop()方法,可以从相反方向来模拟队列。

重排序方法

reverse()方法会反转数组项的顺序

sort()方法按升序排列数组项,sort()方法会调用每个数组项的toString()方法,然后比较字符串。
可以给 sort()方法传递函数实现排序

function comnpare(value1, value2){
	retrun value2-value1;  //降序
	retrun value1-value2;  //升序
}
Array。sort(compare)

操作方法

concat()方法可以基于当前数组中的所有创建一个新数组,这个方法先会创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。

slice()方法是基于当前数组中的一或多个项创建一个新数组。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果由两个参数,该方法返回起始和结束位置之间的项–但不包括结束位置的项

splice()方法

1.删除:可以删除任意数量的项,只需要指定2个参数:要删除的第一项的位置和要删除的项数。例如:splice(0,2)会删除数组中的前两项

2.插入:可以向指定位置插入任意数量的项,只需要提供3个参数:起始位置、要删除的项数(0)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。例如:splice(2,0,“red”,“green”)会从当前数组的第二项开始插入字符串“red”和“green”。

3.替换:可以向指定位置插入任意数量的项。且同时删除任意数量的项,只需指定3个参数:起始位置、要删除的项数和要插入的任意数量的项。==插入的项数不必与删除的项数相等。==例如,splice(2,1,“red”,“green”)会删除当前数组位置2的项,然后从位置2开始插入字符串“red”和“green”。

splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)。

位置方法

indexOf()从数组开头(位置0)开始向后查找。
lastIndexOf方法则从数组的末尾开始向前查找。
这两个方法都是返回要查找的项在数组中的位置,或者在没找到的情况下返回 -1。

迭代方法

ECMAScript5为数组定义了5个迭代方法。每个方法都要接受两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this的值。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。

1.every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。

2.filter():对数组中的每一项运行给定函数,返回函数会返回ture的项组成的数组。

3.forEach():对数组中的每一项运行给定函数。这个没有返回值。

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

5.some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
以上方法都不会修改数组中包含的值。

归并方法

reduce()方法从数组的第一项开始,逐个遍历到最后
reduceRight()方法则从数组的最后一项开始,向前遍历到第一项。
这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。传给 reduce()和 reduceRight()的函数接收4个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
使用 reduce()方法可以执行求数组中所有值之和的操作,比如:

var values = [1, 2, 3, 4, 5];
var sum = value.reduce(function(prev, cur, index, array){
	return prev + cur;
});
alert(sum);   //15

猜你喜欢

转载自blog.csdn.net/zLanaDelRey/article/details/84439483