数组常用属性和方法
构造函数
Array是 JavaScript 的原生对象,同时也是一个构造函数,可以用它生成新的数组。
代码语言:javascript复制var arr = new Array(2);
arr.length // 2
arr // [ empty x 2 ]
Array.isArray()
Array.isArray方法返回一个布尔值,表示参数是否为数组。它可以弥补typeof运算符的不足。
代码语言:javascript复制var arr = [1, 2, 3];
typeof arr // "object"
Array.isArray(arr) // true
上面代码中,typeof运算符只能显示数组的类型是Object,而Array.isArray方法可以识别数组。
valueOf(),toString()
valueOf方法是一个所有对象都拥有的方法,表示对该对象求值。不同对象的valueOf方法不尽一致,数组的valueOf方法返回数组本身。
代码语言:javascript复制var arr = [1, 2, 3];
arr.valueOf() // [1, 2, 3]
toString方法也是对象的通用方法,数组的toString方法返回数组的字符串形式。
代码语言:javascript复制var arr = [1, 2, 3];
arr.toString() // "1,2,3"
var arr = [1, 2, 3, [4, 5, 6]];
arr.toString() // "1,2,3,4,5,6"
push(),pop()
push方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
代码语言:javascript复制var arr = [];
arr.push(1) // 1
arr.push('a') // 2
arr.push(true, {}) // 4
arr // [1, 'a', true, {}]
上面代码使用push方法,往数组中添加了四个成员。
pop方法用于删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组。
代码语言:javascript复制var arr = ['a', 'b', 'c'];
arr.pop() // 'c'
arr // ['a', 'b']
shift(),unshift()
shift方法用于删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组。
代码语言:javascript复制var a = ['a', 'b', 'c'];
a.shift() // 'a'
a // ['b', 'c']
shift方法可以遍历并清空一个数组。
代码语言:javascript复制var list = [1, 2, 3, 4, 5, 6];
var item;
while (item = list.shift()) {
console.log(item);
}
list // []
unshift方法用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
代码语言:javascript复制var a = ['a', 'b', 'c'];
a.unshift('x'); // 4
a // ['x', 'a', 'b', 'c']
unshift方法可以接受多个参数,这些参数都会添加到目标数组头部。
代码语言:javascript复制var arr = [ 'c', 'd' ];
arr.unshift('a', 'b') // 4
arr // [ 'a', 'b', 'c', 'd' ]
join()
join方法以指定参数作为分隔符,将所有数组成员连接为一个字符串返回。如果不提供参数,默认用逗号分隔。
代码语言:javascript复制var a = [1, 2, 3, 4];
a.join(' ') // '1 2 3 4'
a.join(' | ') // "1 | 2 | 3 | 4"
a.join() // "1,2,3,4"
concat()
concat方法用于多个数组的合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变。
代码语言:javascript复制['hello'].concat(['world'])
// ["hello", "world"]
['hello'].concat(['world'], ['!'])
// ["hello", "world", "!"]
除了数组作为参数,concat也接受其他类型的值作为参数,添加到目标数组尾部。
代码语言:javascript复制[1, 2, 3].concat(4, 5, 6)
// [1, 2, 3, 4, 5, 6]