数组的概念
数组指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。数组是一种将一组数据存储在单个变量名下的优雅方式。
创建数组
利用new 关键字创建数组
// [] 是可选的,key 表示要存储的值,值与值之间用 , 号隔开
let 数组名 = new Array(key,key,key );
// 示例:创建了一个名为 arr 的空数组
let arr = new Array();
利用数组字面量创建数组
// 使用数组字面量方式创建数组
let 数组名 = [key,key,key ];
// 数组中可以存放任意类型的数据
let arr = ['fan', true, 17.5];
访问数组元素
/ 定义数组
let arr = ['张三','李四','王五','赵六'];
// 获取数组中的第 2 个元素
console.log(arr[1]); // 李四
// 如果访问数组时没有和索引值对应的元素(数组越界),
console.log(arr[4]);
// 返回值为 undefined
遍历数组
// 数组的长度,默认情况下等于元素的个数
let arr = ['张三','李四','王五','赵六'];
console.log(arr.length); // 4
// 当我们数组里面的元素发生了变化,length 属性跟着一起变
arr = ['张三','李四','王五','赵六','孙七'];
console.log(arr.length); // 5
新增元素
数组中可以通过以下方式在数组的末尾插入新元素。
let arr = ['张三','李四','王五','赵六']; arr[arr.length] = '孙七';
console.log(arr);
翻转数组
// 取数组的最后一位的下标(arr.length - 1),从后往前循环
// 我们采取 递减的方式 i--
let arr = ['张三', '李四', '王五', '赵六', '孙七'];
let newArr = [];
for(let i = arr.length - 1; i >= 0; i--) {
newArr[newArr.length] = arr[i]
}
console.log(newArr);
隔开数组
// 数组转换为字符串 用"|" 或其他符号分割
// 需要一个新变量用于存放转换完的字符串 str
// 遍历取出数据加到 str 后面然后加上分隔符
let arr = ['张三', '李四', '王五', '赵六', '孙七'];
let str = '';
for(let i = 0; i < arr.length; i++) {
str += arr[i] + '|';
}
console.log(str);
// 数组转字符串系统有封装好的方法 join
// 我们现在的目的是为了熟悉循环和数组
筛选数组
// 1. 筛选数组 大于 10 的元素选出来放到新数组中
let arr = [2, 0, 6, 1, 78, 0, 52, 0, 25, 7];
let newArr = []; let j = 0;
for (let i = 0;i < arr.length; i++){
if (arr[i] >= 10) {
newArr[j] = arr[i]; j++;
}
}
console.log(newArr); // 78 52 25
// 第二种方法 利用数组长度的可变性
let arr = [2, 0, 6, 1, 78, 0, 52, 0, 25, 7];
let newArr = [];
for (let i = 0;i < arr.length; i++){
if (arr[i] >= 10) {
newArr[newArr.length] = arr[i];
}
}
console.log(newArr); // 78 52 25
冒泡排序
冒泡排序是编程中最经典也是最简单的一种排序方法,它是通过重复访问对两个相邻的值进行比较,如果 A 值大于 (或小于,根据需求进行判断) B 值,则将两个值的位置进行互换,每一轮对比都可以确定出最大 (或最小) 的值,在下一轮访问时略过这个值,直到排序完成。由于在互换的过程中,最大 (或最小) 的那个值会慢慢的交换到顶部,像汽水一样,故名“冒泡排序”。
let arr = [3,9,5,1,8,2]
for(let i = 0; i < arr.length - 1; i++) {
for(let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j+1]){
let num = arr[j]; arr[j] = arr[j+1]; arr[j+1] = num;
}
}
}
console.log(arr); // 1 2 3 5 8 9
多维数组构建与遍历
// 一维数组
let arr1 = [1,2,3];
// 二维数组
let arr2 = [[11, 12, 13], [21, 22, 23], [31, 32, 33]];
// 二维数组的取值
console.log(arr2[1][2]); // 23
这样的数组被称为 二维数组 取值需要两个下标,下标一确定取那个一维数组,下标二确定取一维数组中的那个值
// 二维数组
let arr2 = [[11, 12, 13], [21, 22, 23], [31, 32, 33]];
// 循环出二维数组中的每个值
for(let i = 0; i < arr2.length; i++){
for(let j = 0; j < arr2[i].length; j++){
console.log(arr2[i][j]);
}
}