数组概述
数组是指一组数据的集合,数组内每个数据被称为元素,在数组中可以存放任意类型的元素。数组是一种将一组数据存储在单个变量名下的优雅方式
let arr = [1,'2',true];
创建数组
js中创建数组有两种方式:
- 利用
new
创建数组
let arr = new Array(); // 创建了一个空数组
- 利用数组字面量创建数组
let arr = []; //创建了一个空数组
let arr1 = [1,'2',true];
获取数组中的元素
索引(下标):用来访问数组元素的序号(索引号从0开始)
数组可以通过索引来访问(获取)、设置、修改对应的数组元素
可以通过数组名[索引号]
的形式来获取数组中的元素
let arr = [1,2,3,4]
arr[0] // 获取数组中第一个元素 1
arr[4] // undefined
遍历数组
遍历数组:把数组中的元素从头到尾访问一次
可以通过循环使索引号递增来遍历数组
let arr = [1,2,3,4]
for (let i = 0; i < arr.length; i++) {
cosole.log(arr[i]);
}
// 1 2 3 4
上述代码中的arr.length
表示数组arr
的数组长度(数组元素数量)
新增数组元素
- 新增数组元素–修改数组长度
let arr = [1,2,3];
arr.length = 5; // 把数组的长度修改为5,里面有5个元素
console,log(arr[3]); // undefined
- 新增数组元素–修改索引号
let arr = [1, 2, 3];
arr[4] = 5;
arr[0] = 0;
console.log(arr.length); // 5
console.log(arr[3]); // undefined
console.log(arr[0]); // 1 被替换为 0
arr = '1';
console.log(arr); // '1' 直接给数组名赋值会覆盖原来的数组
数组案例
求数组的和
let arr = [1, 2, 3, 4];
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
}
console.log(sum); // 10
求数组最大值
let arr = [3, 11, 2, 1];
let max = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
console.log(max); // 11
数组转换为字符串
数组转换为字符串,同时在后面添加一个分隔符|
let arr = [3, 11, 2, 1];
let str = '';
let sep = '|';
for (let i = 0; i < arr.length; i++) {
str += arr[i] + sep;
}
console.log(str); // 3|11|2|1|
数组存放1~5的值
let arr = [];
for (let i = 0; i < 5; i++) {
arr[i] = i + 1;
}
console.log(arr); // [1,2,3,4,5]
数组筛选
// 筛选出大于3的数
let arr = [1, 2, 3, 4, 5];
let arr1 = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] > 3) {
arr1[arr1.length] = arr[i];
}
}
console.log(arr1); // [4,5]
数组去重(删除指定数组元素)
// 删除所有的0
let arr = [1,0,2,0,2,0,0,3];
let arr1 = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
arr1[arr1.length] = arr[i];
}
}
console.log(arr1); // [1,2,2,3]
翻转数组
let arr = [1, 2, 3, 4, 5];
let arr1 = [];
for (let i = arr.length - 1; i >= 0; i--) {
arr1[arr1.length] = arr[i];
}
console.log(arr1); // [5,4,3,2,1]
冒泡排序
冒泡排序,数组[5,4,3,2,1]
let arr = [5,4,3,2,1];
for (let i = 0; i <= arr.length - 1; i++) { // 外层循环管趟数
for (let j = 0; j <= arr.length - i - 1; j++) { // 里层循环管每一趟的交换次数
// 内部交换2个变量的值,前一个和后一个数组元素相比较
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr); // [1,2,3,4,5]