it之路。

javascript 学习之数组-数组方法

Array.join()

这个方法将数组内的所有元素用特定的符号连接起来并返回一个字符串。你可以指定一个用来分隔元素的分隔符,如果没有指定(specify),那么javascript会自动用逗号(comma)来分隔。例如:下面的两行代码就产生了字符串"1,2,3"。

var a=[1,2,3];

var s=a.join(); // s=="1,2,3"

 

注意下面这两行代码中的空格

var a=[1,2,3];

var s=a.join(", ");// s=="1, 2, 3";逗号后有空格

Array.join()方法与String.split()方法刚好相反(the inverse of)。后者通过将字符串打断来创建一个数组。

Array.reverse()

此方法将数组的所有元素顺序颠倒并返回。It does this in place,换句话说它并不是将现有的元素颠倒后组成一个新的数组返回,而是在已有的数组中将这些元素颠倒。如下所示的代码将会产生一个字符串"3,2,1"

var a=[1,2,3];
a.reverse();
s=a.join(); //s=="3,2,1"
Array.sort()
Array.sort()方法在现在数组中对数组进行排序并返回。当不带参数调用此方法时,将采用字母表进行排序(如果有必要的话将临时转换成字符串进行排序)。如:
var a=["banana","cherry","apple"];
a.sort();
vars=a.join();// s=="apple,banana,cherry"
如果数组中包含undefined的话,排序后它们将被放到后面。
要用非字母表顺序对数组进行排序的话,你必须给sort()方法传递一个比较的函数。这个函数将决定哪一个参数将排在前面。如果第一个参数要放在第二个参数的前面,那么这个函数
应该返回一个负值;反之,这个函数应该返回一个正值。如果这两个值相等,则函数应该返回0。
最后,要对数组按照数字排序而不是字母表排序,你就应该这样做:
var a=[11,234,2342,11111];
a.sort();// 字母表序:11111,2342,234,11
a.sort(function(a,b){return a-b;})// 对数组内的比较将会按照函数内的方式进行比较。
 Array.concat()
concat方法创建一个新的数组,这个新的数组的元素由原数组的所有元素加上传递给方法的参数(作为元素放在原数组元素之后)组成。
如果传递的参数中有数组的话,那这个数组将被解散(flattened),而这个数组的元素将被添加到新的数组中返回。注意:此方法并不解散多维数组。如:
var a=[1,2,3];
a.concat(4,5);[returns [1,2,3,4,5]]
a.concat([4,5]);[returns [1,2,3,4,5]]
a.concat([4,5],[6,7]);[returns [1,2,3,4,5]]
a.concat(4,[5,[6,7]]);[returns [1,2,3,4,5,[6,7]
还要注意的是,此方法返回的是一个新的数组,原数组内的元素并没有改变,各位一试便知。

Array.slice()

slice方法返回原数组的一部份元素。它由两个参数来指定第一个元素的索引和最后一个元素的索引,但并不包含由第二个参数指定的最后一个元素。

如果参数只有一个,那么返回的数组将包含由这个参数指定的元素起直到数组的最后一个元素的新数组。

如果参数为负数,他就是由函数最后一个元素开始依次向前数指定的元素。如:-1表示最后一个元素,-2表示倒数第二个,等等。有代码如下:

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

a.slice(0,3); // returns [1,2,3]

a.slice(3); // returns [4,5]

a.slice(1,-1); // returns[2,3,4]

a.slice(-3,-2); // returns [3]

Array.splice()

splice方法是插入和删除数组元素的通用方法。此方法直接在现在数组中修改元素,并不返回新的数组。

splice方法能够删除数组元素,或者增加数组元素,甚至同时完成这两种操作。插入的元素或删除的元素之后的元素将会被做适当的移位以确保他们的连贯性。第一个参数指定了

插入或删除数组元素的起始位置,第二个参数指定了将被删除的元素个数。如果省略了第二个参数,那么由第一个参数指定的位置起之后所有的元素都将被移除。

splice方法返回一个由所有被删除元素组成的一个新数组,如果没有元素被删除,那么返回一个新数组。如下:

var a=[1,2,3,4,5,6,7,8];

a.splice(4); // returns [5,6,7,8];a==[1,2,3,4]

a.splice(1,2); // returns [2,3];a is [1,4];

a.splice(1,1); // returns [4];a is [1]

前两个参数指定将被删除的数组元素,这些参数后还可能还有一些参数,这些参数就是要被添加到被删除的位置上的数组新元素。如下代码:

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

a.splice(2,0,"a","b");// returns []; a is [1,2,"a","b",3,4,5]

a.splice(2,2,[1,2],3);// returns ["a","b"]; a is [1,2,[1,2],3,3,4,5]

注意,splice方法不像concat方法那样把传递进去的数组解散,而是将数组本身作为一个元素插入进去。

Array.push()和Array.pop()

push和pop方法让数组用起来就像是stack一样.push方法将若干个新元素添加到数组的最后并返回新数组的长度。pop方法则相反,它移除数组最后的元素,减少数组的长度,并返回被移除的元素。注意这两个方法都是在原数组中直接修改。如下代码:

var stack=[];

stack.push(1,2);// stack:[1,2] returns 2;

stack.pop();// stack:[1] returns 2;

stack.push(3);// stack:[1,3] returns 2;

stack.pop();// stack:[1] return 3;

stack.push([4,5]);// stack:[1,[4,5]] returns 2

stack.pop();// stack:[1] returns [4,5];

stack.pop();// stack:[] returns 1;

Array.unshift()与Array.shift()

unshift方法与shift()方法很像push与pop方法,不过有一点不同的是,前两者操作数组开头的元素。

unshift方法将新的元素添加到数组中,原所有的数组元素向后移位,函数返回新数组的长度。

shift方法将最前面的元素移除,原所有的数组元素向前移位,函数返回被移除的数组元素。如下代码:

var a = []; // a:[]

a.unshift(1); // a:[1] Returns: 1

a.unshift(22); // a:[22,1] Returns: 2

a.shift(); // a:[1] Returns: 22

a.unshift(3,[4,5]); // a:[3,[4,5],1] Returns: 3

a.shift(); // a:[[4,5],1] Returns: 3

a.shift(); // a:[1] Returns: [4,5]

a.shift(); // a:[] Returns: 1

Array.toString()和Array.toLocaleString()

toString方法返回一个由数组内的所有元素以逗号相连的字符串,注意他不包括方括号等其它的一些定界符。如:

[1,2,3].toString();// returns '1,2,3'

["a","b","c"].toString();// returns 'a,b,c'

[1,[2,'c']].toString();// returns '1,2,c'

不知道你有没有注意到当join方法不带参数时返回的是一样的字符串

toLocaleString方法是toString方法的本地版本,它将每一个数组元素转化成字符串,再将这些字符串用本地符号连接起来

posted @ 2009-03-31 18:20  3912.77  阅读(645)  评论(0编辑  收藏  举报