1, 扁平化 n 维数组
1. 终极篇
[1,[2,3]].flat(1) //[1,2,3][1,[2,3,[4,5]].flat(1) //[1,2,3,4,5][1,[2,3,[4,5]]].toString() //'1,2,3,4,5'[1[2,3,[4,5[...]].flat(Infinity) //[1,2,3,4...n]
Array.flat(n) 是 ES10 扁平数组的 API,
n 表示数组嵌套的深度, 如果数组嵌套两层, n 取值大于或等于 1 都可以, n 值为 Infinity 时维度为无限大. 2. 开始篇
function flatten(arr) { while(arr.some(item=>Array.isArray(item))) { arr = [].concat(...arr); } return arr;}flatten([1,[2,3]]) //[1,2,3]flatten([1,[2,3,[4,5]]) //[1,2,3,4,5]
实质是利用递归和数组合并方法 concat 实现扁平.
2, 去重
1. 终极篇
Array.from(new Set([1,2,3,3,4,4])) //[1,2,3,4][...new Set([1,2,3,3,4,4])] //[1,2,3,4]
set 是 ES6 新出来的一种一种定义不重复数组的数据类型.
Array.from 是将类数组转化为数组.
... 是扩展运算符, 将 set 里面的值转化为字符串.
2. 开始篇
Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len = arr.length; for(i = 0; i <len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ j = ++i; } } result.push(arr[i]); } return result;}[1,2,3,3,4,4].distinct(); //[1,2,3,4]
取新数组存值, 循环两个数组值相比较.
3, 排序
1. 终极篇
[1,2,3,4].sort((a, b) => a - b); // [1, 2,3,4], 默认是升序 [1,2,3,4].sort((a, b) => b - a); // [4,3,2,1] 降序
sort 是 JS 内置的排序方法, 参数为一个
来源: http://www.bubuko.com/infodetail-3625219.html