1.概述
Array是JavaScript的内置对象,同时也是一个构造函数,可以用它生成新的数组。
作为构造函数时,Array可以接受参数,但是不同的参数,会使得Array产生不同的行为。
new Array(1); 返回length为1的空数组;
new Array(1, 2);
2. 静态方法
isArray方法: 用来判断一个值是否为数组。它可以弥补typeof运算符的不足。
var a = [1, 2, 3];
typeof a // "object"
Array.isArray(a) // true
上面代码表示,typeof运算符只能显示数组的类型是Object,而Array.isArray方法可以对数组返回true。
3. Array实例的方法
valueOf: valueOf方法返回数组本身。
toString: 返回数组的字符串形式。
var a = [1, 2, 3];
a.toString() // "1,2,3"
var a = [1, 2, 3, [4, 5, 6]];
a.toString() // "1,2,3,4,5,6"
push: 用于在数组的末端添加一个或多个元素,并返回添加后的数组的长度。
var a = [];
a.push(1) // 1
a.push('a') // 2
a.push(true, {}) // 4
a // [1, 'a', true, {}]
pop: 用于删除数组的最后一个元素,并返回该元素。
var a = ['a', 'b', 'c'];
a.pop() // 'c'
a // ['a', 'b']
join: 以参数作为分隔符,将所有数组成员组成一个字符串返回。
var a = [1, 2, 3, 4];
a.join() // "1,2,3,4"
a.join('') // '1234'
a.join("|") // "1|2|3|4"
concat: 用于多个数组的合并。它将新数组的成员,添加到原数组的尾部,然后返回一个新数组。
['hello'].concat(['world'])
// ["hello", "world"]
['hello'].concat(['world'], ['!'])
// ["hello", "world", "!"]
[1, 2, 3].concat(4, 5, 6)
// [1, 2, 3, 4, 5, 6]
shift: 用于删除数组的第一个元素,并返回该元素。
var a = ['a', 'b', 'c'];
a.shift() // 'a'
a // ['b', 'c']
shift: 可以遍历并清空一个数组。
var list = [1,2,3,4,5,6,7,8,9,10];
var item;
while (item = list.shift()) {
console.log(item);
}
list // []
unshift: 用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。
var a = ['a', 'b', 'c'];
a.unshift('x'); // 4
a // ['x', 'a', 'b', 'c']
reverse: 用于颠倒数组中元素的顺序,使用这个方法以后,返回改变后的原数组。
var a = ['a', 'b', 'c'];
a.reverse() // ["c", "b", "a"]
a // ["c", "b", "a"]
slice: 用于提取原数组的一部分,返回一个新数组,原数组不变。
它的第一个参数为起始位置(从0开始),第二个参数为终止位置(但该位置的元素本身不包括在内)。如果省略第二个参数,则一直返回到原数组的最后一个成员。
// 格式
arr.slice(start_index, upto_index);
// 用法
var a = ['a', 'b', 'c'];
a.slice(1,2) // ["b"]
a.slice(1) // ["b", "c"]
a.slice(0) // ["a","b","c"]
a.slice(-2) // ["b", "c"]
a.slice(4) // []
a.slice(2, 6) // ["c"]
a.slice(2, 1) // []
splice: 用于删除原数组的一部分成员,并可以在被删除的位置添加入新的数组成员。它的返回值是被删除的元素。该方法会改变原数组。
// 格式
arr.splice(start_index, count_to_remove, addElement1, addElement2, ...);
// 用法
var a = ["a","b","c","d","e","f"];
a.splice(4,2)
// ["e", "f"]
a
// ["a", "b", "c", "d"]
4. ECMAScript 5 新加入的数组方法
map: 对数组的所有成员依次调用一个函数,根据函数结果返回一个新数组。
var numbers = [1, 2, 3];
numbers.map(function(n) { return n+1 });
// [2, 3, 4]
numbers
// [1, 2, 3]
forEach: 数组实例的forEach方法与map方法很相似,也是遍历数组的所有成员,执行某种操作,但是forEach方法没有返回值,一般只用来操作数据。如果需要有返回值,一般使用map方法。
var arr = [1, 2, 3, 4, 5, 6, 7];
arr.forEach(function(ele) {
console.log(ele);
})
filter:依次对所有数组成员调用一个测试函数,返回结果为true的成员组成一个新数组返回。
var arr = [1, 2, 3, 4, 5, 6, 7];
console.log(arr.filter(function(elem) {
return elem > 3;
}))