学习总结
1. 数组
数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。
(1)JavaScript 数组是 无类型的: 数组元素可以是任意类型 ,并且同一个数组中的不同元素也可能有不同的类型。数组的元素甚至也可能是对象或其他数组,这允许创建复杂的数据结构,如对象的数组和数组的数组。JavaScript 数组的索引是基于零的 32 位数值: 第一个元素的索引为 0 ,最大可能的索引为 4294967294(2 32 -2) ,数组最大能容纳 29496295 个元素。
(2)JavaScript 数组是 动态的: 根据需要它们会增长或缩减 ,并且在创建数组时无需声明一个固定的大小或者在数组大小变化时无须重新分配空间。
1.1 定义数组
(1)声明数组
定义一个数组有两种方式:
var arr1 = [];
var arr2 = new Array();
(2)声明且初始化
①可以声明的时候就为数组初始化一些初始化值,eg:
var arr1 = [5, 4, 3, 2, 1];
var arr2 = new Array(5, 4, 3, 2, 1);
②同一个数组可以存储不同类型的数据,可以是基本类型也可以是引用类型,eg:
var arr3 = [true, 2, "a", null, undefined, new Object()];
2. 读写数组
(1)把数据写入数组
想给数组添加元素,可以采取以下的方式:
var arr = ["first"];
arr[1] = "second";
var i = 2;
arr[2] = i;
var j = 3;
arr[j] = true;
另外,在 JavaScript 中数组可以使用负数、非整数来索引数组。在这种情况下,数值会转换为字符串,把字符串作为属性来用。记住,只有使用 0~2 32 -2 之间的整数下标才是索引,其他均为该数组的属性。
(2)读出数组中的数据
可以使用如下方式来根据索引读取数组:
var arr = [5, 4, 3, 2, 1];
var num1 = arr[0];//num1 为 5
var num2 = arr[1];//num2 为 4
3. 数组的长度
每个数组都有一个 length 属性,就是这个属性使其区别于常规的 JavaScript 对象。针对稠密(也就是非稀疏)数组, length 属性值代表数组中元素的个数。其值比数组中最大的索引大 1 。
4. 数组的遍历
我们想把一个数组里面的所有的元素取出来,且这个数组有 10000 个元素,可以采取 for 循环的方式,eg:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
var i, len = arr.length;
for (i = 0; i < len; ++i) {
console.info(arr[i]);
}
5. 多维数组
多维数组便是数组里面再存入数组。
eg:
var arr = [[true, false], [false, true]],
i, j, len = arr.lengt;
for (i = 0; i < len ; ++i) {
for (j = 0; j < arr[i]; ++j) {
console.info(arr[i][j]);
}
}
6. 冒泡排序
eg:
var arr = [5, 2, 3, 4, 1];
var i, j,len = arr.length;
for (i = 0; i < len - 1; ++i) {
for (j = 0; j < len - 1 - i; ++j) {
if (arr[j] < arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.info(arr);
// 从大到小排列