代码改变世界

Array

2012-04-18 14:08  呦菜  阅读(326)  评论(0编辑  收藏  举报

数组(array)是一个有序的、值的集合。

创建一个数组的最简单方法就是使用数组直接量。例如:

var empty = []; //没有元素的数组
var array1 = [1,2,3,5];  //4个元素的数组
var arry2 = [1.1,true,"a"]; 

var base = 1;
var arry3 = [base,base+1,base+2]; 

创建数组的另一种方法是使用Array()构造函数。

1.无参数调用:

var a = new Array();

用这个方法创建的是一个没有元素的空数组,和数组直接量[]相等

2.可以显示的指定数组前n个元素的值:

var a = new Array(1,2,3,4,"testing");

3.只传递一个参数,这个数字指定了数组的长度:

var a = new Array(4);

采用这一种方法创建的数组具有指定的元素个数,每个元素的值都是undefined。

数组的下标必须是大于等于0并小于2^32-1的整数,如果使用的数字太大或者使用了负数、浮点数等,Javascript会将它转换成一个字符串,用生成的字符串做对象属性的名字,而不是数组的小标。

属性:

length

方法:

concat()      给数组添加元素

摘要:array.concat(value1,value2,...)

描述:方法concat()将创建并返回一个新数组。它并不修改array。如果要进行concat()的参数是一个数组,那么添加的是数组中得元素,而不是数组。

例子:

var a = [1,2,3];
console.log(a.concat(4,5));         //[1,2,3,4,5]
console.log(a);                     //[1,2,3]
console.log(a.concat([4,5]));       //[1,2,3,4,5]
console.log(a.concat([4,5],[6,7])); //[1,2,3,4,5,6,7]
console.log(a.concat(4,[5,[6,7]])); //[1,2,3,4,5,[6,7]]

join()    将数组中所有的元素都转成字符串,然后连接起来

摘要:

array.join()

array.join(separator)

返回值:一个字符串,用separator链接每个元素的字符串而成

例子:

var a = [1,2,3,"testing"];
console.log(a.join());         //1,2,3,testing
console.log(a.join(" "));      //1 2 3 testing
console.log(a.join("+"));      //1+2+3+testing

pop()  删除并返回数组的最后一个元素

摘要:array.pop()

返回值:array的最后一个元素

描述:方法pop()将删除array的最后一个元素,把数组长度减1,并且返回它删除的元素的值。如果数组已经为空,则pop()不改变数组,返回undefined值

例子:

var a = [1,2,3];
console.log(a.pop());  //3
console.log(a);        //[1,2]
console.log(a.pop());  //2
console.log(a.pop());  //1
console.log(a.pop());  //undefined

push()   把一个项目添加到数组的尾部

摘要:array.push(value,...)

返回值:把指定的值添加到数组后的新长度

描述:方法push()将把它的参数顺次添加到array的尾部。它直接修改array,而不是创建一个新数组。方法push()和方法pop()用数组提供先进后出栈的功能

例子:

var a = [1,2,3];
console.log(a.push(1,2,"test"));  //6
console.log(a);                   //[1,2,3,1,2,"test"]

reverse()  点到数组中的元素顺序

摘要:array.reverse()

描述使用reverse()方法可以颠倒数组中的元素顺序,但并不创建新数组

例子:

var a = [1,2,4,5,7,43];
a.reverse();
console.log(a);    //  [43,7,5,4,2,1]

shift()    将数组头部的元素移出数组

摘要:array.shift()

返回值:数组原来的第一个元素

描述:方法shift()将array的第一个元素移出数组,返回那个元素的值,并且将余下的所有元素前移一位。如果数组是空的,shift将不进行任何操作,返回undefined值。该方法不创建新数组。

例子:

var a = [1,2,4,5,7,43];
a.shift();
console.log(a);    //  [2, 4, 5, 7, 43]

slice()   返回数组的一部分元素

摘要:array.slice(start,end)

参数:

start:数组片段开始处的数组下标。如果是负数,它表示从数组尾部开始的位置,即-1是指最后一个元素。

end:数组片段结束处的后一个元素的数组下标。如果没有指定这个参数,切分的数组包含从start开始到数组结束的所有元素。

返回值:一个新的数组,包含从start到end(不包括该元素)指定的array元素

描述:。。。注意:该方法并不修改数组。如果想删除数组中得一段元素,应该是用方法array.aplice()

例子:

var a = [1,2,4,5,7,43];

console.log(a.slice(0,3));   //  [1,2,4]

console.log(a);              // [1, 2, 4, 5, 7, 43],不修改a数组


console.log(a.slice(3));    //  [5, 7, 43]


console.log(a.slice(-3,-1));    //  [5, 7]


console.log(a.slice(1,-2));    // [2, 4, 5]

sort()   对数组元素进行排序

摘要:

array.sort()

array.sort(orderfunc)

参数: 

orderfunc: 用来指定按什么顺序排列的函数,可选

返回值:对数组的引用。注意:数组在原数组上进行排序,不制作副本。

描述:

 如果调用sort()时没有使用参数,按照字母顺序(字符编码的顺序)对数组中得元素进行排序。

如果需要其他的排序方式,就必须提供比较函数,该函数确定他的两个参数哪个在前哪个在后。

  如果第一个参数应该在第二个参数之前,那么比较函数返回一个小于0的值

  如果第一个参数应该在第二个参数之后,那么比较函数返回一个大于0的值

  如果两个参数相等,那么比较函数将返回0.

注意:如果函数含有未定义的元素,这些元素将被放在数组的末尾

例子:

//无参数

var array1 = [1,4,2,5,"banana","apple"];
array1.sort();
console.log(array1);   //  [1, 2, 4, 5, "apple", "banana"]

//有参数

//升序
var dec = function(a,b){return a-b;};
//降序
var asc = function(a,b){return b-a;}

var array2 = [1,4,5,2,8];
array2.sort(dec);
console.log(array2);  // [1, 2, 4, 5, 8]

array2.sort(asc);
console.log(array2);  // [8, 5, 4, 2, 1]


/* 将数组元素中的奇数放在偶数后面 */

var  setOddBehindEven = function(a,b){
    if(a%2==0 && b%2==1)
    {
        return 1;
    }
    else
    {
        return -1;
    }
};

var b = [1,2,3,4,5,6,7,8,9];
b.sort(setOddBehindEven );
console.log(b);  //  [1, 3, 5, 7, 9, 2, 4, 6, 8]

splice()  插入、删除或替换数组元素

摘要:array.splice(start, deleteCount, value,...)

参数:

start:  开始插入或删除的数组元素的下标

deleteCount:  从start开始,包括start所指元素在内要删除的元素个数,如果没有该参数将删除从start开始到原数组结尾的所有元素

value,... :   要插入数组的值,从start所值的下标处开始插入。

返回值:如果从array中删除了元素,返回的是含有被删除元素的数组

例子:

var a = [1,2,3,4,5,6,7,8];
a.splice(4);    //返回[5,6,7,8]; a的值是[1,2,3,4]
a.splice(1,2);  //返回[2,3]; a的值是[1,4]
a.splice(1,0,2,3);  //返回[]; a的值是[1, 2, 3, 4]

var b = [1,2,3,4,5,6];
b.splice(1,2,"test","apple"); //返回[2,3]; b的值[1, "test", "apple", 4, 5, 6]

 toLocaleString()   把数组转换成局部字符串

摘要: array.toLocaleString()

返回值:数组array的局部字符串表示

抛出:

TypeError   调用该方法时,若对象不是array,则抛出该异常。

描述:数组的toLocaleString()方法将返回数组的局部字符串表示。它首先调用每个元素的toLocaleString()方法,然后使用地区特定的分隔符把生成的字符串连接起来

toString()   将数组转换成一个字符串

摘要: array.toString()

返回值:array的字符串表示

抛出:

TypeError  调用该方法时,若对象不是Array,则抛出该异常

描述:数组的toString()方法把一个数组转换成字符串,首先把数组的每个元素转换成字符串并且返回这个字符串,字符串之间以逗号分隔。

例子:

var a = [1,2,"test",[5,"apple"]];
a.toString();  //返回  1,2,test,5,apple

unshift()  在数组头部插入元素

摘要: array.unshift(value,...)

参数:

value: 要插入数组头部的一个或多个值

返回值:数组的新长度

例子:

var a = [1,2];
a.unshift(3,4);    //返回 4;  a是 [3,4,1,2]
a.unshift([5,6]);  //返回 5; a是[[5,6],3,4,1,2]