js-关于数组的一些事

来源:互联网 发布:巨人网络借壳上市绯闻 编辑:程序博客网 时间:2024/06/09 21:36

Array类型的简介:Array类型在ECMAScript中是一种常见的引用类型,数组中的每一项可以保存任何类型的数据,且数组的大小是可以动态调整的,即可以随着数据的添加自动增长来容纳新增数据。

创建新数组的方式有两种:

1、var colors= new Array();     //使用Array构造函数来创建

2、var colors = ["red","green","yellow"];  //使用数组字面量表示法来创建

数组中的转换方法:

所有对象都具有toLocaleString() , toString() , valueOf() 方法。在数组中,调用数组的toString() 和 valueOf() 方法会返回相同的值,即由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。

var colors = ["red","green", "yellow" ];

alert(colors.toString());//red, green, yellow

alert(colors.valueOf());//red, green, yellow

alert(colors); // red, green, yellow

在这里,最后一行代码直接将数组传递给了alert()。由于alert()要接收字符串参数,所以它会在后台调用数组中每一项的toString()方法,由此会得到与直接调用toString()方法相同的结果。

数组中的一些常见方法:

1、join()方法:

join()方法只接收一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串。

var colors = ["red","green", "yellow" ];

alert(colors.join("||"))  //red||green||yellow

如果不给join()方法传递任何值,或者传入undefined,则使用逗号作为分隔符。



2、栈方法:push() 和 pop()方法

var colors = ["red","green", "yellow" ];

var cont  =  colors.push("brown","pink"); //push方法可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度。

alert(cont);//5

alert(colors);  //red, green, yellow, brown, pink

var item = colors.pop(); // pop()方法从数组末尾移除最后一项,减少数组的长度,返回移除的项

alert(item); // pink



3、队列方法:shift()  unshift() 方法

shift()方法可以移除数组中的第一项并返回该项,同时数组长度减一。shift()和pus()方法结合

unshift()方法可以在数组前端添加任意个项并返回新数组的长度。unshift()和pop()方法结合可以模拟队列



4、重排序方法:reverse()和sort()

var value= [1,2,3,4,5];

value.reverse();

alert(value);//5,4,3,2,1

sort()方法会调用每个数组项的toString()方法,然后比较得到的字符串,所以

var value= [0,1,2,3,10,22];

value.sort();

alert(value);//0,1,10,2,22,3

这并不是我们想要的结果,所以我们可以给sort()方法传递一个比较函数

alert(d.sort(function (n1,n2) {
return n1-n2;

}));



5、连接两个数组:concat()方法

var a = [1,2,3];

var b = [4,5,6];

alert(a.concat(b));//1,2,3,4,5,6



6、选取数组中的一些元素:slice()方法可以接收1或2个参数

var d = [23,45,54,33,22,111];

alert(d.slice(3));//返回从该参数指定位置开始到当前数组末尾的所有项
alert(d.slice(3,4));//返回项的起始和结束位置之间的项,但不包括结束位置的项

若slice()方法的参数有一个负数,则用数组长度加上该数来确定相应的位置,如果结束位置小于起始位置,则返回空数组

假设一个包含5项的数组,调用slice(-2,-1)和slice(3,4)得到的结果相同



7、splice()方法

splice()方法主要用途是向数组的中部插入项,方式有三种

1>.删除:可以删除任意数量的项,只需指定两个参数:要删除的第一项的位置和要删除的项数。

2>.插入:可以向指定位置插入任意数量的项,只需提供三个参数:起始位置,要删除的项数0和要插入的项,若要插入多项就传入多个

3>.替换:向指定位置插入任意数量的项,只需提供三个参数:起始位置,要删除的项数和要插入的项,若要插入多项就传入多个

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

arr.splice(2,3);//删除

arr.splice(2,3,1,2,3,4);//替换
arr.splice(2,0,3,3,3,3,3,3);//添加元素



8、位置方法:indexOf()和lastIndexOf()方法

这两个方法都接收两个参数:要查找的项和(可选)表示查找起点位置的索引。indexOf()方法是从开头查找,lastIndeOf()方法是从数组的末尾找,两个方法都返回查找的项在数组中的位置,或者没找到的情况下返回-1.

var numbers = [1,2,3,4,5,4,3,2,1];

alert(numbers.indesOf(4));//3

alert(numbers.lastIndexOf(4));//5

alert(numbers.indexOf(4,4));//5

alert(numbers.lastIndexOf(4,4));//3

注意:在比较第一个参数与数组中的每一项时,会使用全等操作符

var person = {name:"jack"};

var people = [{name:"jack"}];

alert(people.indexOf(person));//-1

var morePeople = [person];

alert(morePeople.indexOf(people));//0