编程语言
788
Array 对象
构造函数
Array
是原生对象,也是构造函数,可用来生成新数组。
var arr = new Array(2); //生成有两个成员的数组,每个位置都是空值。 var arr2 = Array(2); //没有使用new关键字结果一样 arr.length // 2 arr // [ empty x 2 ]
代码规范有要求可读性, 加上new是很推荐的
Array()
不同的参数个数会导致不一致的行为。
new Array() // [] new Array(1) // [ empty ] new Array(2) // [ empty empty] new Array('abc') // ['abc'] new Array([1]) // [Array[1]] new Array(1, 2) // [1, 2] new Array('a', 'b', 'c') // ['a', 'b', 'c']
Array()
作为构造函数,行为不一致。
不建议使用它生成新数组,使用数组字面量更好
// bad var arr = new Array(1, 2); // good var arr = [1, 2];
ps : 当参数是一个正整数,返回数组的成员都是空位。虽读取时返回undefined
,但该位置没有任何值。虽可读到length
属性,但是取不到键名。
Array方法
Array.isArray()
Array.isArray
表示参数是否为数组, 弥补typeof
运算符的不足, 该方法属于静态方法
typeof
运算符只能显示数组的类型是Object
,而Array.isArray
方法可识别数组。
var arr = [1, 2, 3]; typeof arr // "object" Array.isArray(arr) // true
push(),pop()
push
方法用于在数组的末端
添加元素,并返回添加新元素后的数组长度。
var arr = []; arr.push(1) // 1 arr.push('a') // 2 arr.push(true, {}) // 4 arr // [1, 'a', true, {}]
pop
方法用于删除最后一个元素,并返回该元素。
var arr = ['a', 'b', 'c']; arr.pop() // 'c' arr // ['a', 'b']
对空数组使用pop
方法返回undefined
。
[].pop() // undefined
shift(),unshift()
shift()
方法用于删除数组的第一个元素,并返回该元素。
var a = ['a', 'b', 'c']; a.shift() // 'a' a // ['b', 'c']
unshift()
方法用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。
var arr = [ 'c', 'd' ]; arr.unshift('a', 'b') // 4 (可以有多个参数 arr // [ 'a', 'b', 'c', 'd' ]
sort()
sort
方法对数组成员进行排序,默认是按照字典顺序排序
['d', 'c', 'b', 'a'].sort() // ['a', 'b', 'c', 'd'] [4, 3, 2, 1].sort() // [1, 2, 3, 4] [11, 101].sort() // [101, 11] [10111, 1101, 111].sort() // [10111, 1101, 111] (字典排序
ps:sort()
方法不是按照大小排序,而是按照字典顺序。
数值会被先转成字符串,再按照字典顺序进行比较,所以101
排在11
的前面。
如果想让sort
方法按照自定义方式排序,可以传入一个函数作为参数。
[10111, 1101, 111].sort(function (a, b) { return a - b; }) // [111, 1101, 10111]
sort的参数函数本身接受两个参数,表示进行比较的两个数组成员.如果该函数的返回值大于0
,表示第一个成员排在第二个成员后面;
其他情况下,都是第一个元素排在第二个元素前面。