7.JavaScript中的数组

1.数组的定义

数组时按照次序排列的一组值,每个值的位置都是从0开始,整个数组用方括号表示。

var arr=['a','b','c'];

除了在定义时赋值,数组还可以先定义后赋值。

var arr = [];

arr[0] = 'a';
arr[1] = 'b';
arr[2] = 'c';

任何类型的数据,都可以放入数组中。

var arr = [
  {a: 1},
  [1, 2, 3],
  function() {return true;}
];

arr[0] // Object {a: 1}
arr[1] // [1, 2, 3]
arr[2] // function (){return true;}

上面的arr数组中,第一个数据是对象,第二个数据是数组,第三个数据是一个函数。
如果数组的元素还是数组,就形成可多为数组。

2.数组的本质

本质上,数组属于一种的对象,typeof运算符返回的数组类型是object
数组的特殊体现在,它的键名是按次序排列的一组整数。
由于数组的键名是固定的,所以不必为威哥元素指定键名,而对象吃的背个成员都必须指定键名。

特大新闻:JavaScript中,对象的键名一律为字符串,所以,数组的键名其实也是字符串,之所以可以用数值读取,那是应为数字键名将会转换为字符串。

3.数组的length属性

数组的length属性,返回数组的成员数量。

['a', 'b', 'c'].length // 3

只要是数组,就一定有length长度的属性,该属性是动态变化的,等于键名中的数量加1。

可以根据length的属性可删除和添加元素,获取清空元素。

var arr = [ 'a', 'b', 'c' ];
arr.length // 3

arr.length = d;
arr // ["a", "b", "c", "d" ]

var arr = [ 'a', 'b', 'c' ];
arr.length // 3

arr.length = 2;
arr // ["a", "b"]


var arr = [ 'a', 'b', 'c' ];

arr.length = 0;
arr // []

4.类似数组的对象

如果一个对象中,有一个属相为length:% ,我们就可以认为它是一个数组对象,它看上去像数组,但是无法使用数组的方法。这就是类似数组的对象。

var obj = {
  0: 'a',
  1: 'b',
  2: 'c',
  length: 3
};

obj[0] // 'a'
obj[2] // 'c'
obj.length // 3
obj.push('d') // TypeError: obj.push is not a function

5.in运算符

检查某一个键名是否存,适用于对象,也适用于数组

var arr = [ 'a', 'b', 'c' ];
2 in arr  // true
'2' in arr // true
4 in arr // false

6.循环和数组的遍历

for---in循环不仅可以遍历对象,也可遍历数组,毕竟数组只是一种特殊的对象。

var a = [1, 2, 3];

for (var i in a) {
  console.log(a[i]);
}
// 1
// 2
// 3

for---in遍历时,会遍历出非整数键,所以不建议使用,可以使用,for和while用来循环遍历。

var a = [1, 2, 3];

// for循环
for(var i = 0; i < a.length; i++) {
  console.log(a[i]);
}

// while循环
var i = 0;
while (i < a.length) {
  console.log(a[i]);
  i++;
}

var l = a.length;
while (l--) {
  console.log(a[l]);
}

var colors = ['red', 'green', 'blue'];
colors.forEach(function (color) {
  console.log(color);
});