Array 数组
1. 数组的声明与初始化
1.1 使用Array构造函数
let arr1 = new Array();
let arr2 = new Array(5); //创建大小为5的数组
let arr3 = new Array("Tom","Amy","Cindy"); //初始化
其中new操作符可以省略
let arr1 = Array();
let arr2 = Array(5); //创建大小为5的数组
let arr3 = Array("Tom","Amy","Cindy"); //初始化
1.2 数组字面量
let colors = ["red","blue","yellow"];
let names = [];
2. Array.from()
用于将类数组结构转换为数组实例。
1. 将字符串拆分为单字符数组
2. 将map和set转换为数组
3. 对现有数组执行潜复制(复制结果与原数组===返回false)
3. Array.of()
可以把一组参数转换为数组
4. length
- 可以通过减小数组的length从数组的末尾删除元素。
- 可以通过数组的length为下标实现在数组末尾增添元素。
5. 迭代器方法
const a = ["akane","fuji","sakura"];
//将迭代器转换为数组
const aEntries = Array.from(a.entries());
console.log(aEntries); //[[0, "akane"][1, "fuji"][2, "sakura"]]
//在循环中拆分键值对
for (const [key, element] of a.entries()){
console.log(key);
console.log(element);
}
输出:
6. 复制和填充方法
6.1 copyWithin()
copywithin(m,n1,n2);
把[n1,n2]的元素赋值到索引m的位置。
必须满足:
1. n1<n2
2. n1<arr.length
3. n2<arr.length
4. n1>0, n2>0
否则忽略
6.2 fill()
一个参数a时,将数组内所有元素替换为a。
两个参数(a, n),将索引>=n的元素替换为a。
三个参数(a, n1, n2), 将索引>=n1并<n2。
当n为负数时,用数组长度length减n。
const arr = [0,0,0,0,0];
arr.fill(5); //arr = [5,5,5,5,5]
arr.fill(6,3); //arr = [5,5,5,6,6]
arr.fill(7, 1, 3); //arr = [5,7,7,6,6]
//等同于arr.fill(8,4,1);
arr.fill(8,-1,-4); //arr = [5,8,8,8,6]
7. 栈方法和队列方法
pop()
shift()
简而言之就是:
pop() 取最后一个插入的元素(栈顶元素)LIFO
shift() 取最先插入的元素 (队首元素)FIFO
8. 排序方法sort()
sort会默认调用toString方法,也就是说根据数组元素的字符串形式来排序,
无法很好地将number类型按数字大小排序。
sort方法可以接受一个比较函数。
let arr = [4,3,1,5,2];
//比较方法:
function compare(value1, value2){
if(value1<value2){
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}
arr.sort(compare);
还可以将比较函数写成箭头函数
arr.sort((a,b) => a<b ? -1 : a>b ? -1 : 0);
9. concat()
9.1 Symbol.isConcatSpreadable 数组打平
数组强制打平
Symbol.isConcatSpreadable = true;
数组强制不打平
Symbol.isConcatSpreadable = true;
PS:
(待代码补充)
打平:把concat参数中数组内含的套娃数组中元素都视为普通元素接在目标数组后。
不打平:套娃数组还是数组形式接入目标数组。
10. slice()
创建包含原有数组元素的数组。
arr2 = arr1.slice(n);
arr3 = arr1.slice(n1,n2);
将arr1中索引>=n的元素赋给arr2。
将arr1中索引[n1,n2)内的元素赋给arr3。
11. splice()
(待补充代码)
splice(n, num, value1, value2,val...);
n:开始位置
num:删除元素数量
value:添加元素