1.数组介绍
- 什么是数据?
数组的概念
- 数组的字面意思就是一组数据,
- 数据类型可以是同种数据也可以是多种数据类型
2.数组的定义
- 方式一:
- new Array(参数1,参数2,...)参数为一个时,是数组的长度(new可以省略,但一般尽量写上)
var arr = new Array();
var arr = new Array(10);
var arr = new Array(1,2);
var arr = [1,2,3,4,5];
3.数组的使用
3.1数组元素的获取(通过下标索引访问)
- arr[0]:表示数组的第一个元素,0是下标,也叫索引
- arr[1]:表示数组的第二个元素,1是下标
- arr[length-1]:表示数组的最后一个元素,length-1是最后一个元素的下标
3.2数组的长度
- arr.length是数组的长度,也是数组的个数
- length属性:可读,也可以设置
3.3数组的赋值
arr[0] = 10;
arr[2] = 20;
4.数组的常用方法
数组常用方法在这里分为两类:
会改变原数组的方法
pop(),push(),shift(),unshift(),sort(),reverse(),splice()
- pop() 删除数组的最后一个元素,返回删除元素,会改变原数组
var arr = [11,22,33,44,55];
console.log(arr.pop());
console.log(arr);
- push() 往数组后面添加元素,根据参数数量,添加一个或多个值,返回新数组的长度,会改变原数组
var arr = [11,22,33,44,55];
console.log(arr.push("66","77"));
console.log(arr.push(88));
console.log(arr);
- shift() 删除数组的第一个元素,返回被删除的元素,会改变原数组
var arr = [11,22,33,44,55];
console.log(arr.shift());
console.log(arr);
- unshift() 从元素前面添加元素,根据参数数量,添加一个或多个值,返回新数组的长度,会改变原数组
var arr = [11,22,33,44,55];
console.log(arr.unshift(66));
console.log(arr);
console.log(arr.unshift(7,7));
console.log(arr);
- sort() 排序,默认是根据ASCII码,进行比较排序
- 0-9 48-57
- a-z 97-122
- A-Z 65-90
var arr = [2,5,4,76,92,4];
arr.sort(function (a,b) {
return a-b;
})
console.log(arr);
var arr = [9,7,8,6,3,"AA","BB"];
arr.reverse();
console.log(arr);
var arr = [11,22,33,44,55];
var res = arr.splice(2,2);
console.log(res);
console.log(arr);
var arr = [11,22,33,44,55];
var res = arr.splice(2,0,"11","22");
console.log(res);
console.log(arr);
var arr = [11,22,33,44,55];
var res = arr.splice(2,1,"19");
console.log(res);
console.log(arr);
不会改变原数组的方法
slice() concat() join()
- slice() 截取
- 两个参数,参数1是开始位置,参数2是结束位置,包含参数1,但不包含参数2
- 一个参数,参数是开始位置,从开始位置往后面截取,截取后面所有元素
var arr = [1,2,3,4,5,6,7,8];
var res = arr.slice(2,4);
console.log(res);
console.log(arr);
- concat() 拼接数组,或数据,会返回一个新数组,不会改变原数组
var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr3 = arr1.concat(arr2);
var arr4 = arr3.concat(1,2,3,4);
console.log(arr1);
console.log(arr2);
console.log(arr3);
console.log(arr4);
var arr = [2023,12,12];
console.log(arr.join());
console.log(arr.join("+"));
console.log(arr.join("a"));
5.实现数组的拷贝(浅)
var arr = [11,22,33,44];
var arr1 = arr.concat();
console.log(arr);
console.log(arr1);
var arr2 = arr.slice(0);
console.log(arr);
console.log(arr2);
6.数组的遍历
- 稀疏数组:数组中有些元素是空的,空的值默认是undefined
- 例:var arr = ["张三",,,"李四",,"王五","赵六"]
for循环
- 通过下标获取值
- 如果遍历稀疏数组时,undefined会被遍历出来
var arr = ["张三",,,"李四",,"王五","赵六"];
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
for...in
- 通过下标获取值
- 语法:
for(var key in arr){}
- 如果遍历稀疏数组时,undefined不会被遍历出来
var arr = ["张三",,,"李四",,"王五","赵六"];
for(var key in arr){
console.log(arr[key]);
}
for...of
- 直接获取值
- 语法:
for(var value of 数组名){}
- 如果遍历稀疏数组时,undefined会被遍历出来
- value直接获取数组元素
var arr = ["张三",,,"李四",,"王五","赵六"];
for(var value in arr){
console.log(value);
}
7.数组的去重
利用对象的key值
var arr = [1,2,2,4,5,3,1,4,2]
var obj = {}
for(var i=0;i<arr.length;i++){
obj[arr[i]] = ""
}
var arr1 = []
for(var key in obj){
arr1.push(Number(key))
}
console.log(arr1)
利用indexOf === -1
- indexOf === -1 说明数组中没有这个元素
var arr = [1,2,2,4,5,3,1,4,2]
var arr1 = []
for(var i=0;i<arr.length;i++){
if(arr1.indexOf(arr[i]) === -1){
arr1.push(arr[i])
}
}
console.log(arr)
console.log(arr1)
双重for循环
- 会改变原数组
注:删除之后,数组元素将会少一个,所以要j--
var arr = [1,2,2,2,1]
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i] == arr[j]){
arr.splice(j,1)
j--
}
}
}
console.log(arr)
new set
var arr = [1,2,2,4,5,3,1,4,2]
var set1 = new Set(arr)
console.log(set1)
var arr1 = Array.from(set1)
console.log(arr1)