(1)知识点
- (1.1)含义
- (1.2)创建
- (1.3)遍历
(2)细化
(2.1)含义
之前我们用到的都是一维数组,实际项目中会用到很多** 数组的元素又引用了另一个子数组 **,这种称之为二维数组
- (1.2)创建
何时使用:保存横行竖列的二维数据,保存上下级关系的数据
直接定义并初始化
a. 创建一个空数组:var data=[];
b. 设置数组中每个元素再引用另一个小数组
data[0]=[0,0,0,0];定义一个未知长度的二维数组
var tArray = new Array(); //先声明一维
for (var k = 0; k < i; k++) { //一维长度为i,i为变量,可以根据实际情况改变
tArray[k] = new Array(); //声明二维,每一个一维数组里面的一个元素都是一个数组;
for (var j = 0; j < p; j++) { //一维数组里面每个元素数组可以包含的数量p,p也是一个变量;
tArray[k][j] = ""; //这里将变量初始化,我这边统一初始化为空,后面再用所需的值覆盖里面的值
}
}
- (2.3)遍历
访问二维数组中任意位置的元素:data[r][c]
tips:二维数组行下标r不能越界,越界就报错
遍历二维数组:固定套路:
外层循环遍历行,内层循环遍历当前行的中的列
for (var r = 0; r < data.length; r++) {
for (var c = 0; c < data[r].length; c++) {
当前元素:data[r][c]
}
}
(3)实践
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>二维数组</title>
</head>
<body>
</body>
</html>
<script type="application/javascript">
/**
* (1)数组的元素又引用了另一个子数组
* (2)二维数组行下标r不能越界,越界就报错
* (3)遍历二维数组
*/
var arr = new Array();
var subArr1 = [1, 2, 3];
var subArr2 = ['a', 'b', 'c'];
arr.push(subArr1);
arr.push(subArr2);
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
console.log(arr[i][j]);
}
}
onsole.log("----------完美的分隔符----------");
/**
* 冒泡排序
* 数组排序
* @param arr
* @param compare
*/
function bubble(arr, compare) {
for (var r = 1; r <= arr.length - 1; r++) {
//任意一轮排序的公式
for (var i = 0; i < arr.length - r; i++) {
console.log(arr);
console.log(arr[i], arr[i + 1]);
if (compare(arr[i], arr[i + 1]) > 0) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
console.log(arr);
console.log("______________________");
}
console.log("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
}
}
function compare(a, b) {
return parseFloat(a) - parseFloat(b);
}
var arr = ['35px', '12px', '5px', '123px'];
bubble(arr, compare);
console.log("结果:" + arr);//["5px", "12px", "35px", "123px"]
console.log("----------完美的分隔符----------");
</script>