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

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]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,272评论 0 4
  • Ruby 数组(Array) Ruby 数组是任何对象的有序整数索引集合。数组中的每个元素都与一个索引相关,并可通...
    黑夜的眸阅读 1,113评论 0 0
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,186评论 6 13
  • 转载:在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总...
    七色烟火阅读 3,255评论 0 3
  • 第1章 认识JS JavaScript能做什么?1.增强页面动态效果(如:下拉菜单、图片轮播、信息滚动等)2.实现...
    mo默22阅读 1,344评论 0 5