美文网首页
2019-03-21 数组几个不low操作

2019-03-21 数组几个不low操作

作者: 范晓坤 | 来源:发表于2019-03-21 11:28 被阅读0次

1.扁平化n维数组

1.终极篇
Array.flat(n)是ES10扁平数组的API,n表示维度,n值为Infinity时维度为无限大。

[1,[2,3]].flat(2) //[1,2,3]
[1,[2,3,[4,5]].flat(3) //[1,2,3,4,5]
[1,[2,3,[4,5,[...]]]].flat(Infinity) //[1,2,3,4,5...n]

2.开始篇
实质是利用递归和数组合并方法以及扩展运算符实现扁平

function flattern(arr){
  while(arr.some(item=>Array.isArray(item))){
    arr=[].concat(...arr);
  }
  return arr;
}
flattern([1,[2,3]]) //[1,2,3]
flattern([1,[2,3,[4,5]]]) //[1,2,3,4,5]

2.去重

1.终极篇
set是ES6新出来的一种定义不重复数组的数据类型
Array.from是将类数组转化为数组
...是扩展运算符,将set里面的值转化为字符串

Array.from(new Set([1,2,3,3,4,4]))
[...new Set([1,2,3,3,4,4])]

3.排序

1.终极篇

[1,2,3].sort();//[1,2,3]默认是升序
[1,2,3,4].sort((a,b)=>b-a);

4.最大值

1.终极篇
Math.max()是Math对象内置的方法,参数是字符串。
reduce是ES5的数组API,参数有函数和初始默认值。
函数有4个参数:
pre:上一次的返回值
cur:当前值
curIndex:当前值索引
arr:当前数组

Math.max(...[1,2,3,4]) //4
Math.max.apply(this,[1,2,3,4])//4
[1,2,3,4].reduce((prev,cur,curIndex,arr)=>{
  return Math.max(prev,cur)
},0) //4

5.求和

1.终极篇

[1,2,3,4].reduce(function(pre,cur){
 return pre+cur;
},0) //10

6.合并

[1,2,3,4].concat([5,6]) //[1,2,3,4,5,6]
[...[1,2,3,4],...[5,6]] //[1,2,3,4,5,6]
[1,2,3,4].push.apply([1,2,3,4],[5,6]) //[1,2,3,4,5,6]

相关文章

网友评论

      本文标题:2019-03-21 数组几个不low操作

      本文链接:https://www.haomeiwen.com/subject/tqxqvqtx.html