数组:使用一个变量来管理多个(一组)数据,方便维护和操作。
数组是一组有序的(数组的编号有序)数据的集合
有序:数据在数组中是有编号的,这个编号(下标、索引)是有序的,从0开始。未来利用索引来操作数组。
1.数组的创建
1)通过构造函数
语法:
var 变量名 = new Array();
var 变量名 = new Array(数据, 数据, 数据, 数据);
代码举栗:
var nums = new Array(); //空的数组。里面没有数据。
var nums = new Array(1000,1001,1002,1003); //里面有数据。
2)数组字面量(推荐使用)
语法:
var 变量名 = [];
代码举栗:
var nums = []; //数组字面量,简写格式。底层还是new Array();
var nums = [1000,1001,1002,1003];
2.数组的操作
在js中数组内可以放任何不同类型的数据,但是在使用时一般存放同类型的数据。
1)获取数组中的某一个数据(利用索引)
语法:数组名[索引号]
代码举栗:
var userNames = ['张三','李四','王五','赵六'];
// 获取李四
console.log(userNames[1]); // 李四
console.log(userNames[4]); // undefined
2)设置数组中的某一个数据(利用索引)
语法:数组[索引号] = 数据;
代码举栗:
var userNames = ['张三','李四','王五','赵六'];
// 修改李四 为 LiSi
userNames[1] = 'LiSi';
console.log(userNames); // ['张三','LiSi','王五','赵六']
3)遍历数组
(遍历即循环。)
获取数组的长度:(数组中数据的个数)
语法:数组名.length
代码举栗:
//若从头开始遍历数组,开始的位置一定是0。因为索引是从0开始的。
var nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
for (var i = 0; i < nums.length; i++) { // i就是索引
document.write('<h2>' + nums[i] + '</h2>');
}
4)length
设定数组的长度:
语法:数组名.length = 数字;
若设置的长度小于原有的长度时,会自动删除后面多余的数据。
若设置的长度大于原有的长度时,会自动增加空的(undefined)数据。
代码举栗:
var userNames = ['张三','李四','王五','赵六'];
userNames.length = 6; // 因为数组长度为6,所以新增了两个空间
清空数组:数组名 = []; 或 数组名.length = 0;
如果索引溢出(即超出原有的最大索引),在此不会报错,而是返回一个undefined。
给数组末尾添加新的数据:
数组名[最后的索引数+1] = "数据"; 相当于 数组名[数组名.length] = "数据";
若在最后添加数据,数组的长度会自动变化。
3.冒泡排序
规律:总共要比较多少趟,数组的长度-1;每趟比较的次数,数组的长度-当前趟数。
原理:重复比较相邻的两个数字
代码举栗:(从小到大)
var t;
var num = [2,1,4,6,5,3,8,7,9,10];
for(var i = 0; i < num.length; i++) {
for(var j = 0; j < num.length-i-1; j++) {
if(num[j] < num[j+1]) {
t = num[j+1];
num[j+1] = num[j];
num[j] = t;
}
}
document.write(num[j] + " ");
}
或
function minToMax(arr) {
var temp;
document.write("From min to max: ");
for(var i = 0; i < arr.length; i++) {
for(var j = 0; j < arr.length-1-i; j++) {
if(arr[j] > arr[j+1]) {
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
document.write(arr);
}
网友评论