var params = new Array(); var count1 = params.unshift("a"); alert(count1); // 1 alert(params); // a var count2 = params.unshift("b"); alert(count2); // 2 alert(params); // b,a var count3 = params.unshift("c", "d"); alert(params); // c,d,b,a
观察发现,如果一次unshift()中有多项,它会将这些项按照顺序插入到数组中,即第一个参数插入最前面。像上面的例子中那样,第一次插入“a”,第二次在数组的最前面插入“b”,第三次时有多项,但是顺序是c在前,d在后。
5. 重排序方法
数组中提供了两个直接用来重排序的方法。
reverse()方法
reverse()方法会反转数组项的顺序。
var values = [1,2,3,4,5]; values.reverse(); alert(values); // 5,4,3,2,1
sort()方法
在默认情况下,sort()方法按升序排列数组项。为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串。因此,sort()方法比较的是字符串。
var values = [3,5,53,2,34]; values.sort(); alert(values); // 2,3,34,5,53
然而,我们可以说这种排序基本是毫无意义的,我们需要的是对数值进行排序。sort()方法可以接收一个比较函数作为参数,以便指定排序规则。
比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数位于第二个参数之后则返回一个正数。
function compare(value1, value2) { if (value1 < value2) { return -1; } else if (value1 > value2) { return 1; } else { return 0; } } var values = [3,5,53,2,34]; values.sort(compare); alert(values); // 2,3,4,34,53
6. 操作方法
concat()方法
可以基于当前数组中的所有项创建一个新数组。这个方法会创建一个当前数组的副本,然后将参数添加到副本的末尾,然后返回新构建的数组。如果传递给concat()方法的是一个或多个数组,则会将该数组中的每一项添加到数组中。
var arrays = ["a", "b", "c"]; var arrays2 = arrays.concat("d", ["e", "fe"]); alert(arrays); // a,b,c alert(arrays2); // a,b,c,d,e,f
slice()方法
基于当前数组中的一或多个项创建一个新数组。slice()方法可以接收一个或两个参数,即要返回项的起始和结束位置。当只要一个参数,返回从起始项到数组末尾的所有项,当有两个参数时,返回起始位置和结束位置之间的项(不包括结束项)。slice()方法不会影响原数组。
var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"]; var cities2 = cities.slice(1); var cities3 = cities.slice(1,3); alert(cities2); // shanghai,shenzhen,guangzhou alert(cities3); // shanghai,shenzhen
splice()方法
splice()方法主要用于向数组的中部插入项,使用方式有3种:
• 删除 可以删除任意数量的项,指定2个参数:要删除的第一项和删除的项数,如:splice(1,3)会删除数组中的第2、3、4项
var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"]; cities.splice(1,3); alert(cities); // beijing
• 插入 可以向指定位置插入任意数量的项。指定3个参数:起始位置、0(要删除的项数)、要插入的项
var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"]; cities.splice(1,0,"hongkong"); alert(cities); // beijing,hongkong,shanghai,shenzhen,guangzhou
• 替换 可以替换指定位置的项。指定3个参数:起始位置、要删除的项、要插入的任意项。
var cities = ["beijing", "shanghai", "shenzhen", "guangzhou"]; cities.splice(1,2,"hongkong"); alert(cities); // beijing,hongkong,guangzhou
7. 位置方法
JavaScript中有两个位置方法:indexOf()方法和lastIndexOf()方法。这两个方法都接收两个参数:要查找的项和(可选)表示查找起点位置的索引。
indexOf()方法表示从数组的开头向后查找,lastIndexOf()则从数组的末尾开始向前查找。它们都返回查找的项在数组中的位置,如果没有找到则返回-1。在第一个参数与数组中的每一项比较时使用的是全等。
var nums = [1,2,3,4,5,6]; alert(nums.indexOf(3)); // 2 alert(nums.lastIndexOf(5)); // 4 alert(nums.indexOf(3,1)); // 2 alert(nums.lastIndexOf(4,4)); // 3
8. 迭代方法