Array数组[1]

Array数组系列

[1]数组的介绍
[2]数组API[1]
[3]数组API[2]
[4]数组API[3]
[5]数组API[4]

参考文章

[1]https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
[2]https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Array_comprehensions
[3]https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype
[4]https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length
[5]https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
[Recommend]http://web.mit.edu/jwalden/www/isArray.html

[1]数组的介绍

  1. 数组创建语法

    • 数组创建有三种方法,语法分别如下:

      1
      2
      3
      4
      5
      6
      //第一种
      [element0, element1, ..., elementN]
      //第二种
      new Array(element0, element1[, ...[, elementN]])
      //第三种
      new Array(arrayLength)

      elementN

      1. 前两种方法通过传入参数对数组进行初始化,当然参数也可以为空,直接是:
      1
      2
      var arrTemp1 = [];
      var arrTemp = new Array();

      需要注意的是,如果使用第二种方法创建数组,当传入的参数中有一个且为数值的时候,则变成用第三种方法创建数组了。

      arrayLength

      1. 数组创建的第三种方法是指定数组的长度,数组创建后每个元素都为undefined,长度则为传入的数值。
      • JavaScript的数组类似与列表形式,数组中的元素类型和数组的长度都可以发生改变。
  2. 数组的访问

  • 数组的第一个元素的下标为0,最后一个元素的下标则为数组的长度减去1(arr.length - 1)。
1
2
3
4
var arr = ['this is the first element', 'this is the second element'];
console.log(arr[0]); //打印:'this is the first element'
console.log(arr[1]); //打印:'this is the second element'
console.log(arr[arr.length - 1]); //打印:'this is the second element'

Tip:
数组的访问不能类似对象Object访问属性一样使用点(.)。其实无论是数组还是对象,在访问元素或者属性的时候,如果属性开头是数字,在进行访问的时候都只能通过方括号进行[]。

1
2
3
4
5
6
var temp = {
'3d' : '3dModel',
'2d' : '2dModel'
}
console.log(temp.3d) //报错 SyntaxError: Unexpected identifier(…)
console.log(temp[3d]) //打印:3dModel
  1. 数组长度length和下标index的关系
  • 数组的长度通过arr.length获得,下标的范围则是从0开始到arr.length - 1
1
2
3
var fruits = [];
fruits.push("banana", 'apple', 'peach');
console.log(fruits.length); //打印: 3
  • 通过改变数组的长度来修改数组内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fruits[5] = 'mango';
console.log(fruits[5]); //打印:mango
console.log(Object.keys(fruits)); //打印:["0", "1", "2", "5"]
console.log(fruits.length); //打印:6
console.log(fruits); //打印:["banana", "apple", "peach", undefined × 2, "mango"]

//增加数组的长度
fruits.length = 10;
console.log(fruits.length); //打印:10
console.log(fruits); //打印:["banana", "apple", "peach", undefined × 2, "mango", undefined × 4]

//减少数组的长度
fruits.length = 2;
console.log(fruits.length); //打印:2
console.log(fruits); //打印:["banana", "apple"]

结论:

  1. 改变数组的长度会影响数组元素中的内容
  2. 增加数组的长度,对于新增的数组元素内容直接赋值为undefined
  3. 减少数组的长度,则截断数组
  1. 数组常用API分类
    *. 数组属性(properties)

Array.length
Array.prototype

*. 改变数组API(Mutator Methods)

Array.prototype.pop()
Array.prototype.push()
Array.prototype.shift()
Array.prototype.unshift()
Array.prototype.reverse()
Array.prototype.sort()
Array.prototype.splice()

*. 访问数组API(Accessor Methods)

Array.prototype.concat()
Array.prototype.join()
Array.prototype.slice()
Array.prototype.toString()
Array.prototype.indexOf()
Array.prototype.lastIndexOf()

*. 遍历数组API(Iteration Methods)

Array.prototype.forEach()
Array.prototype.every()
Array.prototype.some()
Array.prototype.filter()
Array.prototype.map()
Array.prototype.reduce()
Array.prototype.reduceRight()