JavaScript学习笔记-数组

数组

1.定义

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

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;}

相关说明:

1. 任何类型的数据都可以放入数组
2. 数组也可以先定义后赋值
3. 数组的本质属于一种特殊的对象。typeof运算符会返回object
4. 其特殊性体现在:他的键名是按次序排列的一组整数(0,1,2…)
5. Javascript语言规定,对象的键名一律为字符串,所以数组的键名其实也是字符串。之所以可以用数值读取,是因为非字符串的键名会被转为字符串。

2.length属性

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

arr[2] = 'c';
arr.length // 3

arr[9] = 'd';
arr.length // 10

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

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

1. length属性是一个动态的值,等于键名中的最大整数加1
2. length属性是可写的,可改变数组成员的数量

3. 数组的遍历

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

var a = [1, 2, 3];
a.foo = true;

for (var key in a) {
  console.log(key);
}
// 0
// 1
// 2
// foo

由上可知for…in不仅会遍历数组所有的数字键,还会遍历非数字键。因此数组的遍历优先考虑使用for循环或while循环或者数组的forEach方法

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 colors = ['red', 'green', 'blue'];
colors.forEach(function (color) {
  console.log(color);
});
// red
// green
// blue

4. 类似数组的对象

// arguments对象
function args() { return arguments }
var arrayLike = args('a', 'b');

arrayLike[0] // 'a'
arrayLike.length // 2
arrayLike instanceof Array // false

// DOM元素集
var elts = document.getElementsByTagName('h3');
elts.length // 3
elts instanceof Array // false

// 字符串
'abc'[1] // 'b'
'abc'.length // 3
'abc' instanceof Array // false

数组的slice方法可将类数组对象变成真正的数组

var arr = Array.prototype.slice.call(arrayLike);

参考:阮一峰的JavaScript 教程

猜你喜欢

转载自blog.csdn.net/qq_34997906/article/details/83717191