数组是值的有序集合,Javascript数组是无类型的,数组元素可以是任意类型,并且同一数组中的不同元素也可以是不同类型。

创建数组

设置length属性

数组元素的添加与删除

遍历数组

var data = [1,2,3,4,5];
var sum = 0;
data.forEach( function(x){
    sum += x;
});
sum // 15

数组方法

join()

var a = [1,2,3];
a.join(" ");// "1 2 3"
Array(5).join('-'); // "-----"

reverse()

将数组中的元素颠倒顺序。

sort()

将数组中的元素排序,并返回排序后的数组。

var a = [3,2,1,4];
a.sort(function(x,y){
    return x < y;
});
a // [4,3,2,1]

concat()

返回一个新数组,元素包括原数组以及contact的每个参数:

slice()

slice(start [, end])
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

splice()

arrayObject.splice(index,howmany,item1,.....,itemX)

var a = [1,2,3,4,5];
a.splice(2,3); // 返回[3,4,5], a为[1,2]

push()、pop()、unshift()、shift()

forEach()

array.forEach(callback[, thisArg])
callback: 函数会被依次传入三个参数: 元素值, 元素索引, 被遍历的数组对象本身
thisArg: 在执行callback函数时指定的this值

var result = {
    val : 0,
    fold : function( x, idx, array ){
        this.val += x;
    }
}

var a = [1,2,3,4,5];
a.forEach( result.fold, result );
result.val // 15

map()

arr.map(callback[, thisArg])
将数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。
[1,2,3].map( function(x) { return x*x; } ); // [1,4,9]

filter()

返回的数组元素是调用数组的一个子集,传递的函数用来逻辑判断,为true的元素会成为子集的元素。

every() 和 some()

所有元素都满足和只要有一个满足条件的算法。

reduce() 和 reduceRight()

arr.reduce(callback,[initialValue])
当不提供初始值时,会使用数组的第一个元素。

var a = [1,2,3,4,5];
var product = a.reduce( function(x,y) {return x*y;}, 1 ); // 120
var max = a.reduce( function(x,y) {return x>y?x:y;} ); // 5

indexOf() 和 lastIndexOf()

搜索指定值的第一个索引,没找到返回-1