1. 数组的含义
数组就是一组数组的集合,在内存中(堆内存)表现为一段连续的内存地址。
数组是一个变量, 分配一串连续的地址空间。
数组可以存储多个数据,并且可以是任意数据类型。
创建数组最根本目的:就是为了保存更多的数据。
2. 数组的声明
1、声明数组的关键字有let、var、new三种:
<script>
// 使用var关键字声明数组 arr是创建的数值名
var arr = [];
// 使用let关键字声明数组 arr是创建的数值名
let arr = [];
// 使用new关键字声明数组 arr是创建的数值名
let arr = new Array();
</script>
2、声明数组的方式有以下两种:
<script>
// 声明一个空数组
var arr = [];
let arr = [];
let arr = new Array();
// 字面量创建的数组里面只有一个数字时,表示该数组长度为1
let arr = [66];
// new关键字创建的数组里面只有一个数字时,表示该数组的长度,所有值都为空
let arr = new Array(66);
</script>
3、注意:
(1)数组的长度是可以变化的,使用arr.length;就可以获取到数组的长度。
(2)数组中存的数据,称为数组元素,通过arr[下标];就可以获取。数组下标是从0开始计算的。
(3)字面量和new关键字创建的区别是:new 的形式与字面量创建类似,可以是将值放进数组中;但是不同的是:当new Array()中只有一个数字时,表示的是数组的长度,里面每一个值为空
(4)let和var声明的区别:
let声明范围是块作用域,var声明的范围是函数作用域。
let不允许同一个块作用域中重复声明变量。
let变量引用之前需要先声明,类似C++函数调用之前要先声明。而var则会被提升,无视声明顺序。
var在全局作用域声明的变量会成为window对象的属性,而let不会。
3. 数组的方法
(1)获取数组长度
语法格式:数组名.length
代码示例:
<script>
let arr = [66,1,3,567,543,3,56];
console.log(arr.length); //输出的结果为7
</script>
(2)获取数组元素
语法格式:数组名[下标]
代码示例:
<script>
let arr = ['pink','blue','yellow','red','green'];
console.log(arr[3]); //输出的结果为red
</script>
(3)添加数组元素
语法格式:数组名.push(添加的元素) //添加到数组的末尾
代码示例:
<script>
let arr = ['apple', 'peach', 'pear', 'banana'];
// 添加的元素之间用逗号隔开
arr.push('西瓜', '草莓', 123,'mkeshfk');
console.log(arr);
</script>
语法格式:数组名.unshift(添加的元素) //添加到数组的前面
代码示例:
<script>
let arr = ['apple', 'peach', 'pear', 'banana'];
// 添加的元素可以是数字、字符、中文英文字符串
arr.unshift('西瓜', '草莓', 123, 'mkeshfk');
console.log(arr);
</script>
注意:添加数组元素时,数组中元素的下标会发生变化。
(4)删除数组元素
语法格式:数组名.pop() //删除数组末尾的一个元素
代码示例:
<script>
let arr = [12, 34, 67, 89, 23, 57];
arr.pop();
console.log(arr);
</script>
语法格式:数组名.shift() //删除数组开头的第一个元素
代码示例:
<script>
let arr = [12, 34, 67, 89, 23, 57];
arr.shift();
console.log(arr);
</script>
注意:删除数组元素时,数组中元素的下标会发生变化。
(5)删除、添加、修改数组元素
语法格式:数组名.splice(下标,删除的长度,添加的值)
删除操作: 数组名.splice(下标,删除的长度)
添加操作: 数组名.splice(下标,0,添加的值)
修改操作:数组名.splice(下标,删除的长度,添加的值)
代码示例:
<script>
let arr = ['name', 'sex', 'age', 'class'];
// 删除操作
arr.splice(2, 1); //只删除了age这一个元素
arr.splice(2, 2); //删除了从age开始的后两个元素
console.log(arr);
// 添加操作
arr.splice(3, 0, 'id'); //在arr[3]的位置添加了id这个元素
console.log(arr);
// 修改操作
arr.splice(2,1,'hobby'); // 将原本arr[2]位置的元素删除,然后将hobby放在它的位置上
console.log(arr);
</script>
(6)合并数组元素
语法格式:数组名1.concat(数组名2)
注意: 返回一个新数组 ,不会改变原数组。
代码示例:
<script>
let arr1 = ['name', 'sex', 'age', 'class'];
let arr2 = ['jie', '20', 'girl', '321']
// 定义一个新数组来接收合并后的数组
let newArr = arr1.concat(arr2);
console.log(newArr);
</script>
(7)截取数组元素
语法格式: 数组名.slice(起始下标(要被截取),结束下标(不被截取))
注意:不会改变原数组,会将截取的元素以数组的形式返回。
代码示例:
<script>
let arr = ['mi', 'hong', 'ming', 'wei','jie'];
// 截取是从arr[1]开始到arr[3]结束
let newArr = arr.slice(1,3);
// 没有改变原数组长度
console.log(arr);
// 截取的元素形成新的数组
console.log(newArr);
</script>
(8)反转数组元素
语法格式:数组名.reverse()
注意:会改变原始数组。
代码示例:
<script>
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.reverse();
console.log(arr);
</script>
(9)连接数组元素
语法格式: 数组名.join(分隔符)
注意:将数组中的元素以逗号或者设置的分隔符连接成一个字符串,并返回。
代码示例:
方法一:
<script>
let arr = ['h', 'e', 'l', 'l', 'o'];
console.log(arr.join("-"));
</script>
方法二:
<script>
let arr = ['h', 'e', 'l', 'l', 'o'];
let newArr = arr.join("-")
console.log(newArr);
</script>
(10)查询数组元素
语法格式: 数组名.indexOf(值)
注意:给定值是否在数组中,在返回对应的下标,不在返回-1。
代码示例:
<script>
let arr = ['h', 'e', 'l', 'l', 'o'];
console.log(arr.indexOf('e')); //返回下标为1
console.log(arr.indexOf('l')); //返回下标为2
// 数组中含有相同元素时,只返回查询到的第一个元素下标
</script>
语法格式:数组名.includes(值)
注意:给定值是否在数组中,在返回true,不在返回false。
代码示例:
<script>
let arr = ['h', 'e', 'l', 'l', 'o'];
console.log(arr.includes('e')); //返回true
console.log(arr.includes('w')); //返回false
</script>
(11)排序数组元素
语法格式:数组名.sort()
注意: 默认sort 是字符串排序;数字大小排序,需要写一个function。
sort(function(a,b){
return a-b; //升序
})
sort(function(a,b){
return b-a; //降序
})
代码示例:
<script>
let arr = [1, 3, 5, 2, 9, 6, 7];
// 默认是从小到大排序
arr.sort();
console.log(arr);
</script>
4. 数组的应用
(1)求数组中最大的数
<script>
let arr = [1, 23, 5, 12, 9, 36, 7];
let max = arr[0];
// 最大值
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
// 结果
console.log(max); // 返回值为36
</script>
(2)求数组中最小的数
<script>
let arr = [1, 23, 5, 12, 9, 36, 7];
let min = arr[0];
// 最小值
for (let i = 1; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
// 结果
console.log(min); // 返回值为1
</script>
(3)数组中元素去重
<script>
// 数组中多个元素相同时
let arr = [12, 23, 4, 5, 12,23, 12, 12, 34,23];
for (let i = 1; i < arr.length; i++) {
for (let j = 0; j < i ; j++) {
if (arr[i] == arr[j]) {
arr.splice(i, 1);
i--;
break;
}
}
}
document.write(arr);
</script>
推荐:https://blog.csdn.net/qq_45799465/article/details/122892209