目录
数组扁平
// flat(Infinity): 不论数组有多少层都拍成一维数组且不会改变原数组 es6
const arr = [1, [2, 3, [4, 5], 6, [7, [8, [9, [10]]]]]]; // 多维数组
const arr2 = [[1, 2, 3], [4, 5, 6]]; // 二维数组
arr.flat(Infinity); // 结果 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arr2.flat(Infinity); // 结果 [1, 2, 3, 4, 5, 6]
// 仅处理二维数组
const arr3 = arr2.reduce((acc , x) => acc.concat(x), []);// 结果 [1, 2, 3, 4, 5, 6]
数组去重
// Set去重,最优雅但是无法对空对象{}去重 es6
const arr = [1, 1, 2, 6, 9, 6, 2, 3, 4, 3];
const arr1 = Array.from(new Set(arr));// 结果[1, 2, 6, 9, 3, 4]
数组排序
// 默认排序顺序是根据字符串Unicode码点,英文字母也可排序
const arr = [1, 2, 9, 5, 3, 6, 7];
const arr1 = ["C", "Z", "B", "A", "H", "Y", "Q"];
arr.sort();// 结果[1, 2, 3, 5, 6, 7, 9]
arr1.sort();// 结果['A', 'B', 'C', 'H', 'Q', 'Y', 'Z']
// 排序函数
const fn = (a, b) => { // 排序函数 b-a倒序 a-b正序
return b - a; //
};
arr.sort(fn);// 结果[9, 7, 6, 5, 3, 2, 1]
// 先排序再翻转数组结果一样
arr.sort().reverse();// 结果[9, 7, 6, 5, 3, 2, 1]
数组转字符串
const arr = ["C", "Z", "B", "A", "H", "Y", "Q"];
const str = arr.join(",");// 结果"C,Z,B,A,H,Y,Q"
const arr1 = str.split(",");// 结果['C', 'Z', 'B', 'A', 'H', 'Y', 'Q']
数组分割合并
// 合并
const arr1 = [1, 2, 3, 4];
const arr2 = [5, 6, 7, 8];
const arr = arr1.concat(arr2);
// const arr = [...arr1, ...arr2]; es6
// 分割 slice第一个参数=开始下标 第二个参数=结束下标(不包含)====>理解为从第一个参数下标开始截(第二个参数-第一个参数)个
const arr3 = arr.slice(0, 2);// 结果[1, 2]
const arr4 = arr.slice(2, 6);// 结果 [3, 4, 5, 6]
数组元素查找
const arr = [1, 2, 3, 4];
const item1 = 3;
const item2 = 6;
// 查简单一维数组
arr.includes(item1);// 结果 true
arr.indexOf(item1);// 结果 2
arr.includes(item2);// 结果 false
arr.indexOf(item2);// 结果 -1
// 查数组对象
findIndex() //返回索引
find() //返回元素
数组增删
const arr = [1, 2, 3, 4];
arr.push(5); // 结果 [1,2,3,4,5]
// arr.splice(索引,往右删除数量) 不建议循环中使用,原数组改变后索引也会改变
arr.splice(1,1) // 结果 [1,3,4,5]
// delete arr[索引] 可用于循环中,原数组长度不变索引也不变,循环后把empty过滤掉即可
delete arr[1] // 结果 [1,empty,4,5]
arr.filter(x=>x!==undefined) // 结果 [1,4,5]
数组迭代
// 改变原数组
forEach() 方法对数组的每个元素执行一次提供的函数。
// 返回新数组
map() 返回是该数组中的每个元素都调用一个提供的函数后返回的结果。
filter() 返回通过所提供函数实现的测试的所有元素。
reduce() arr.reduce((累加值 , x) => {函数体}, 初始值);
// 判断
some() 方法检查数组中 至少有一个元素 可以通过被提供的函数方法。返回Boolean值。
every() 方法检查数组中 每个元素 可以通过被提供的函数方法。返回Boolean值。