所谓数组,就是将多个元素(通常是同一类型的),按一定顺序排列放到一个集合中,那么这个集合就称之为数组
在javascript中,数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整
1、创建数组
1.1通过构造函数创建数组:
let arr = new Array();创建了一个空数组;let arr = new Array('aa','bb','cc');创建了一个数组,里面存放了三个字符串let arr = new Array(11,22,33)创建了一个数组,里面存放了三个数字
1.2通过数组子面量创建数组:
let arr = [];创建了一个空数组let arr = [11,22,33];创建了一个数组,里面存放了三个数字let arr = ['aa','bb','cc'];创建了一个数组,里面存放了三个字符串
2、数组的下标与长度
2.1数组的下标:
数组是有序的,数组中的每一个元素都对应了一个下标,下标是从
0开始的
let arr = ['aa','bb','cc'];
arr[0]; // 下标是0,对应的值是'aa'
arr[2]; // 下标是2,对应的值是'cc'
2.2数组的长度:
跟字符串一样,数组也有一个
length的属性,指数组中存放的元素的个数
let arr = ['aa','bb','cc'];
arr.length; // 数组的长度为3
空数组的长度为0
2.3数组的长度与下标的关系:
数组的最大下标 = 数组的长度 - 1
3、数组的赋值与取值
3.1数组的取值:
- 格式:
数组名[下标] - 功能:获取数组对应下标的那个值,如果下标不存在,返回
undefined
let arr = ['red','blue','green'];
arr[0]; // red
arr[2]; // green
arr[3]; // 返回undefined,因为数组最大的下标为2
3.2数组的赋值:
- 格式:
数组名[下标] = 值; - 功能:为数组新增值,如果下标有对应的值,会把原来的覆盖,如果下标不存在,会给数组新增一个元素
- 注意:如果一个数组的最大长度是
3,可是却给数组下标为5赋了一个值,则下标为3、4的值为empty(空)
let arr = ["red", "green", "blue"];
arr[0] = "yellow"; // 把red替换成了yellow
arr[3] = "pink"; // 给数组新增加了一个pink的值
arr[5] = "black"; // 数组输出为["red", "green", "blue",empty,empty,"black"]
4、数组的遍历
遍历: 对数组的每一个元素都访问一次,叫做遍历
4.1数组遍历的基本语法:
let arr = [1,2,3,4,5,6,7,8,9];
for(var i = 0; i < arr.length; i++){
console.log(arr[i]); // 1 2 3 4 5 6 7 8 9
}
4.2数组遍历的逆向遍历语法:
// i= arr.length-1 ==> 表示初始化表达式 从数组最后一位开始遍历
// i>=0 表示判断条件,下标要满足大于等于0
// i--,表示每次遍历 初始值都是自减的
let arr = [1,2,3,4,5,6,7,8,9];
for(let i = arr.length-1; i >= 0; i--){
console.log(arr[i]); // 9 8 7 6 5 4 3 2 1
}
5、数组综合练习
5.1求一个数组中的最大值、最小值以及对应的下标
let arr = [298, 1, 3, 4, 6, 2, 23, -88,77,44];
let max = arr[0]; // 随机取数组中的一个值与其他值比较
let maxIndex = 0; // 初始化最大值的下标
let min = arr[0];
let minIndex = 0;
for(let i = 0; i< arr.length; i++){
if(max < arr[i]){ // 用一开始选择的值,与遍历后的值进行比较
max = arr[i]; // 当后面的值比初始值大,就将后面的这个值赋值给初始值,再用这个全新的值再v 去与后面的比较
maxIndex = i; // 比较结束后,此时的索引就是最大值的索引
}
if(min > arr[i]){
min = arr[i];
minIndex = i;
}
}
console.log("最大的值是:" + max);
console.log("最大值的下标是:" + maxIndex);
console.log("最小的值是:" + min);
console.log("最小值的下标是:" + minIndex);
5.2让数组倒序保存到一个新的数组中
需要了解数组的一个方法 push,在数组的最后面添加
let arr = ["大乔", "小乔", "甄姬", "不知火舞"];
let newArr = [];
for (let i = arr.length - 1; i >= 0; i--) {
newArr.push(arr[i]);
}
console.log(newArr); // ["不知火舞", "甄姬", "小乔", "大乔"]
5.3将字符串数组用"|"或其他符号拼成一个字符串
let arr = ["aa","bb","cc","dd"];
let str = "";
for(let i = 0; i<arr.length; i++){
if(i == arr.length-1){
str = str + arr[i]; // 判断一下,如果是最后一个的话就不用加“|”
}else{
str = str + arr[i]+"|"; // str初始值是一个空字符串,遍历的时候需要加上前一次的结果
}
}
5.4数组去重
- 定义一个新的数组,分别遍历两个数组,判断两个里的每一项是否相等;
- 如果发现两个相等,说明是重复的;
- 当两个不相等的时候,将这个去重数组的当前项
push到新数组中;
let arr = [1, 1, 5, 7, 8, 3, 2, 5, 7, 2, 4, 6, 2, 5, 7, 2, 5];
//定义一个新数组
let newArr = [];
//遍历需要去重的数组
for (let i = 0; i < arr.length; i++) {
//假设不存在
let flag = true;
//需要判断arr[i]这个值是否在新数组中存在
for(let j = 0; j < newArr.length; j++){
//进行比较即可
if(arr[i] == newArr[j]){
//如果发现了相等的数,说明存在
flag = false;
}
}
if(flag){
//如果假设成立,说明不存在
newArr.push(arr[i]);
}
}
console.log(newArr);