数组(Array)在前端开发中经常使用,今天我们来学习下数组。我们从Array创建方式(构造函数、字面量),实例方法等方面来学习Array。
构造函数。
Array是 JavaScript 的原生对象,同时也是一个构造函数,可以用它生成新的数组。
- var arr = new Array(2);
- console.log(arr.length); // 2
- console.log(arr); // [ empty x 2 ]
在上面代码中,Array构造函数的参数2,表示生成一个两个成员的数组,每个位置都是空值。
如果没有使用new,运行结果也是一样的。也就是 var arr = new Array(2); 等同于 var arr = Array(2);
Array构造函数有一个很大的缺陷,就是不同的参数,会导致它的行为不一致。
- // 无参数时,返回一个空数组
- new Array() // []
- ​
- // 单个正整数参数,表示返回的新数组的长度
- new Array(1) // [ empty ]
- new Array(2) // [ empty x 2 ]
- ​
- // 非正整数的数值作为参数,会报错
- new Array(3.2) // RangeError: Invalid array length
- new Array(-3) // RangeError: Invalid array length
- ​
- // 单个非数值(比如字符串、布尔值、对象等)作为参数,则该参数是返回的新数组的成员
- new Array('abc') // ['abc']
- new Array([1]) // [Array[1]]
- ​
- // 多参数时,所有参数都是返回的新数组的成员
- new Array(1, 2) // [1, 2]
- new Array('a', 'b', 'c') // ['a', 'b', 'c']
使用构造函数Array创建数组,不传参数,会得到一个空数组;如果参数只有一个而且参数为正整数,表示新数组的长度;如果使用非正整数作为参数,会报错;如果单个非数字作为参数,那么这个参数就是新数组的成员;如果是多个参数,那么所有的参数都是新数组的成员。
通过上面的代码,可以看到,Array作为构造函数,行为很不一致。因此,不建议使用它生成新数组,直接使用数组字面量是更好的做法,而我们在开发中更多的也是使用字面量形式创建数组。比如下面的代码:
- // 构造函数形式
- var arr = new Array(1, 2, 3);
- ​
- // 字面量形式
- var arr = [1, 2, 3];