1-数组
01.数组的定义
- 数组就是一组数据的有序集合
- 数组的定义:[数据,数据,数据,数据,....]
数组的三要素:
- 元素:数组中的每一个数据就是数组中的一个元素,元素是可以任何类型
- 下标:数组中元素的序号,序号从0开始,
- 长度:数组中元素的个数就是数组的长度 数组名.length
查找数组中的元素
arr[2],查询数组的长度console.log(arr.length)
定义一个空数组
let arr_0 = []
//下标 0 1 2 3 4 5
let arr = [10, 20, 30, 40, 50, 60]
console.log(arr) //10 20 30 40 50 60
console.log(arr[2]) //20
console.log(arr.length) //6
02.数组元素的基本操作
let arr = [10, 20, 30, 40];
// 这是查看数组中所有的元素
console.log(arr) //10 20 30 40
// 查看某个具体的元素
// 语法:数组名[下标]
console.log(arr[0]) //10
console.log(arr[1]) //20
console.log(arr[2]) //30
console.log(arr[3]) //40
// 如果所访问的元素不存在就是undefined
console.log(arr[10]) // undefined
// 添加元素
// 语法:数组名[下标] = 数据
arr[4] = 50;
arr[5] = 60;
console.log(arr)
// 修改元素
// 在添加元素时,如果指定的下标已存在则是修改
arr[0] = 1000;
console.log(arr)
03.数组的元素的增删
添加元素
//下标 0 1 2 3
let arr = [10, 20, 30, 40];
arr[10] = 50;
console.log(arr); //10 20 30 40....50
arr[3] = 22; 如果下标3的元素已经存在,那就修改
console.log(arr); //10 22 30 22
头部操作
- 数组名
.unshift(数据)在头部添加加元素(unshift推荐) - 数组名
.shift()在数组头部删除元素(shift推荐)
let arr = ['one','two','three'];
arr.unshift('40') //在头部添加加元素
console.log(arr); //'one','two','three','40'
arr.shift(); //在头部删除元素
console.log(arr); //'one','two','three'
中间操作
- 数组名
.splice(起始下标,删除个数,新元素,新元素...) - 从 起始下标 开始,删除指定个数的元素,还可以在被删除的位置插入新的元素
let arr = [10, 20, 30, 40, 50,60, 70,80,90,100,110];
// arr.splice(1,2);
// arr.splice(1);
// arr.splice(1,2,'a','b','c','d');
arr.splice(1,0,'a','b','c','d');
console.log(arr);
尾部操作
- 数组名
.push(新数据)在最后追加元素(push推荐) - 数组名
.pop()删除最后的元素(pop推荐)
let arr = [10, 20, 'two'];
arr.push('hello')
console.log(arr)
arr.push(22) //在最后追加元素(push推荐)
console.log(arr) // 10 20 'two' 22
arr.pop(); //删除最后的元素(pop推荐)
console.log(arr) // 10 20 'two'
02.数组的遍历语法
由于某种需求,需要对数组中的每个元素都访问一次,这就是遍历,
let arr = ['zhangsan', 'lisi', 20, 30,50];
// 使用for循环的控制变量来模拟数组的下标
for(let i=0;i < arr.length ;i++){
// console.log(i);
// 将循环控制变量作为数组的下标
console.log(arr[i]); //'zhangsan', 'lisi', 20, 30,50
}
固定语法:
- 使用循环控制变量来模拟数组下标的规律
- 循环体内,将循环控制变量作为数组的下标
- 循环控制变量 < 数组.length 作为表达式
let arr = ['abc', 'xyz', 'hello', 'world', 'adys'];
for(let i=0;i< arr.length;i++){
console.log(i, arr[i])
}
03.代码练习
(1)求数组中最大的值,并打印出来
let arr = [20, 30, 8, 40, 12, 24, 15];
// 1. 先定义一个变量 max 将数组中的0号元素赋值给max
let max = arr[0]
// 2. 从1号下标开始遍历数组
for(let i=1; i<arr.length; i++){
// 3. 将遍历 到的元素 与 max里的值进行比较
if(arr[i] > max){
// 4. 如果 遍历到的元素 比 max里的大,就覆盖max里的值
max = arr[i]
}
}
console.log(max) //40
(2)求数组所有值的和
let arr = [98, 87, 92, 80, 91, 100];
let atr = 0;
for (let i=0;i<arr.length;i++){
// atr = atr +arr[i];
atr+=arr[i];
}
alert(atr); //548
(3) 将数组中大于10的元素筛选出来,保存到一个新的数组中。
let arr = [5, 12, 8, 11, 9, 15, 20];
let atr = [];
for (let i=0;i<arr.length;i++){
if (arr[i]>10){ //添加arr[i]>10的条件
atr.push(arr[i]) //利用push在atr 尾部添加arr>10的元素
}
}
alert(atr); //12 11 15 20
(4) 将元素0删除掉(数组塌陷)
//debugger
let arr = [0,8,0,10,0,10,14,0,40,0,0,8];
for (let i=0; i<arr.length; i++){
if (arr[i]==0){
arr.splice(i,1);
i--; //解决了 塌陷问题
}
}
alert(arr); //8 10 10 14 40 8