扩展运算符:…
Array.from():转数组
Array.of():将一组值转为数组
copyWithin():
- Array.copyWithin(定位, 从定位开始读, 停止读) :复制到定位的位置(原有数据会覆盖),返回新数组
find(),findIndex(),findLast(),findLastIndex()
- find():找出第一个符合条件的数组成员,没有返undefined
- findIndex():找出第一个符合条件的数组成员,没有返-1
- findLast(): 从后面到前面找起
- findLastIndex():从后面到前面找起
fill(填充数,填充起始位,结束位)给值填充一个数组
- [‘a’, ‘b’, ‘c’].fill(7, 1, 2) // [‘a’, 7, ‘c’]
toReversed(),toSorted(),toSpliced(),with() — 不改变原数组,而是返回原数组操作后的拷贝
- toReversed()对应reverse(),用来颠倒数组成员的位置。
- toSorted()对应sort(),用来对数组成员排序。
- toSpliced()对应splice(),用来在指定位置,删除指定数量的成员,并插入新成员。
- with(index, value)对应splice(index, 1, value),用来将指定位置的成员替换为新的值。
⭐ group()、groupToMap() — 将数组成员分组
- group((数组当前成员,该成员的索引,原数组) => {return 条件 ? ‘分组名1’ :’分组名2’ }) — 按照字符串分组
- groupToMap((数组当前成员,该成员的索引,原数组) => {return 条件 ? 分组对象名1 :分组对象名2 }) — 按照对象分组
1
2
3
4
5
6
7const array = [1, 2, 3, 4, 5];
const odd = { odd: true };
const even = { even: true };
array.groupToMap((num, index, array) => {
return num % 2 === 0 ? even: odd;
});
// Map { {odd: true}: [1, 3, 5], {even: true}: [2, 4] }
⭐ 数组的空位
- Array(3) // [, , ,] —- 遍历空位识别为undefined
- Array.from()、扩展运算符(…)、entries()、keys()、values()、find()和findIndex()会将空位处理成undefined。
- copyWithin()会连空位一起拷贝。
- fill()会将空位视为正常的数组位置。
- for…of循环也会遍历空位。
- map()方法遍历,空位是会跳过的。
Array.prototype.flat 扁平化嵌套数组 — ES10
- 含义:按照深度去遍历数组,并将数组与遍历到的子数组中的元素合并到一个新数组并返回
- 返回值:返回一个新数组,不改变旧数组
- 语法:arr.flat(depth)
- 参数:可选,数组遍历的深度,默认是1
- 注意:flat()会溢出数组中的空项
- 示例:
1
2
3
4
5
6const arr = [1, 2, [[[[3, 4]]]]];
arr.flat(); // [1, 2, [[[3, 4]]]]
arr.flat(3); // [1, 2, [3, 4]]
arr.flat(-1); // [1, 2, [[[[3, 4]]]]]
arr.flat(Infinity); // [1, 2, 3, 4]
Array.prototype.flatMap
- 含义:映射函数映射数组(深度为1)的每个元素,然后压缩成一个新数组
- 语法:arr.flatMap(function callback(currentVal[,index[,array]]){}[,thisArg])
- 参数:
- callback:
- currentVal: 当前数组在处理的元素
- index:可选,正在处理的元素索引
- array: 可选,被调用的数组
- thisArg:执行callback函数时所使用的this值
- callback:
- 返回值:返回一个新数组,并且每个元素都是回调函数的结果
- 示例:
1
2
3let arr = ['My name', 'is', '', 'Lisa'];
let newArr1 = arr.flatMap(cur => cur.split(' ')); // ["My", "name", "is", "", "Lisa"]
let newArr2 = arr.map(cur => cur.split(' ')); // [["My", "name"], ["is"], [""], ["Lisa"]]