第九章 9.2 数组的方法(Array Methods)

注:这里只讲解一些 Array() 的最重要的方法。其他更多的参考手册。

9.2.1 join()

将所有元素转换为字符串并默认用 "," 连接。可以指定一个附加的参数来自定义分隔符:

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

该方法是 String.split() 方法的逆操作。

9.2.2 reverse()

该方法把已有的数组翻转,返回一个相反次序排列的数组。注意该数组是就地操作的,而不是创建新的数组。

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

9.2.3 sort()

如果不传递任何参数,则按字母顺序排序。(如果必要,会自动把非字符串的数据临时转变为字符串以供比较)。

var a = new Array("banana""cherry""apple");
a.sort();
var s = a.join(""); // a == "apple, banana, cherry"

undefined 元素将被排列到最后。
可以传递一个自定义的比较函数来决定自定义的排序。该函数必须返回负数,0,正数来决定参数中的前者还是后者次序比较大,或者是相等的。例如:

var a = [3341111222];
a.sort(); 
// 按字母顺序:1111, 222, 33, 4
a.sort(function(a,b) { // 按数字大小:4, 33, 222, 1111
          return a-b;
       });

9.2.4 concat()

连接数组元素。例子:

var a = [1,2,3];
a.concat(
45); // 返回 [1,2,3,4,5]
a.concat([4,5]); // 返回 [1,2,3,4,5]
a.concat([4,5],[6,7]); // 返回 [1,2,3,4,5,6,7]
a.concat(4, [5,[6,7]]); // 返回 [1,2,3,4,[6,7]]

9.2.5 slice()

返回数组的片断。(或者说子数组)。有两个参数,分别指定开始和结束的索引(不包括第二个参数索引本身)。如果只有一个参数,则返回从这个索引到最后的;如果任意一个参数为负的,则表示是从尾部向前的索引计数。比如 -1 表示最后一个,-3 表示倒数第三个。例子:
var a = [1,2,3,4,5];
a.slice(
03); // [1,2,3];
a.slice(3); // [4,5]
a.slice(1,-1); // [2,3,4];
a.slice(-3,-2); // [3]

9.2.6 splice()

接合。
用于插入或删除数组中的某些元素。该操作是就地修改的,不返回新数组。
第一个参数指定删除或插入将发生的位置。第二个参数指定将要删除的元素数目,如果省略该参数,则从第一个参数的位置到最后都会被删除。splice() 会返回被删除元素的数组。如果没有元素被删,则返回空数组。

var a = [1,2,3,4,5,6,7,8];
a.splice(
4);    // Returns [5,6,7,8]; a is [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]

注意和 concat() 不同的是,splice() 不能自动拆分并连接数组参数。

9.2.7 push() 和 pop()

这两个方法允许我们像操作堆栈 (stack) 一样操作数组。push() 在尾部附加一个或多个元素,并返回新的 length;pop() 操作在尾部删除一个元素,并返回该元素。
var stack = [];       // 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]       Returns 3
stack.push([4,5]);    // stack: [1,[4,5]] Returns 2
stack.pop(  )         // stack: [1]       Returns [4,5]
stack.pop(  );        // stack: []        Returns 1

9.2.8 unshift() 和 shift()

这两个函数和 push() , pop() 类似,只不过他们添加或删除元素发生在数组的开始而不是最后位置。例子:

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 
注意当 unshift() 传递了多个参数的时候,这些参数是被一下子添加进去的,所以加进去后的次序和参数列表里的次序相同。

9.29 toString() 和 toLocaleString()

数组的 toString() 方法调用其中每一个元素的 toString() 然后用逗号连接他们得到结果。返回的字符串里不包含任何方括号或其他分隔符:
[1,2,3].toString(  )          // Yields '1,2,3'
["a""b""c"].toString(  )  // Yields 'a,b,c'
[1, [2,'c']].toString(  )     // Yields '1,2,c'

toLocaleString() 是 toString() 的本地化版本。对其中每个数组元素会调用 toLocaleString() 来转换,而且分隔符也会采用本地化的设置值。

posted on 2005-04-22 14:11 NeilChen 阅读(...) 评论(...)  编辑 收藏

公告

导航