资讯专栏INFORMATION COLUMN

扁平化数组的问题延伸

CocoaChina / 460人阅读

摘要:起因在掘金上看到道前端面试题,其中有一道题是这样的有数组,将它变为,即扁平化数组并排序解答答案点赞排名第一的大佬的解答如下解析首先,不做赘述,参见语法数组转换其次,,数据结构,因为其内值唯一的特性,可以完成数组去重再者,是,内描述很详细,

起因
在掘金上看到100道前端面试题,其中有一道题是这样的  
有数组[11, 1, 3, 5 [4, 5], 2, [2, [44, 22, 1, [22, 13, 6]]]],将它变为[1,2,3...],即扁平化数组并排序
解答
答案点赞排名第一的大佬的解答如下:
Array.from(new Set(arr.flat(Infinity))).sort((a, b) => {return a - b;});
解析
首先,Array.from不做赘述,参见ES6语法数组转换  
其次,new Set()set数据结构,因为其内值唯一的特性,可以完成数组去重
再者,是Array.prototype.flat,mdn内描述很详细,只是我没有用过QAQ,其中还有用reduce结合concat实现flat的例子,这里也不多说了
最后,还有一个坑,是排序,这个我就忘了,因为默认的sort是先将数组转换字符串再比较的,这样的数组排序则是按照code码排序了,例如[101, 1, 2].sort() = [1, 101, 2]
总结
深入了解api的运作机制,灵活运用,不能总想自己造轮子和写算法,能“懒”则“懒”~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105519.html

相关文章

  • 面试题目别有洞天 -> 从es6优雅解法,到降级polyfill,再到redux reduce

    摘要:每次被执行时,和被传入,这个根据进行累加或者是自身消减,英文原意,进而返回最新的。 之前的一篇文章:从一道面试题,到我可能看了假源码讨论了bind方法的各种进阶Pollyfill,今天再分享一个有意思的题目。 从解这道题目出发,我会谈到数组的Reduce方法,ES6特性和Redux数据流框架中Reducer的命名等等。一道典型的题目,却如唐代诗人章碣《对月》诗中所云:别有洞天三十六,水...

    econi 评论0 收藏0
  • 对象平化

    摘要:引言中午起来有个人问了我一个题,怎么实现对象扁平化,如图仔细一看这不就是层次遍历么,又仔细一看,我好像还没研究过如何写数据结构,作罢,花了两小时暴力解决思路本来想的是对象或者数组,对象有个好处,可以标识是第几层,但是数组操作比较方便,有的方 引言 中午起来有个人问了我一个题,怎么实现对象扁平化,如图showImg(https://segmentfault.com/img/bVDIrf?...

    Aomine 评论0 收藏0
  • 创建华丽 UI 7条规则 第一部分 (2019年更新)

    摘要:未点击的按钮顶部的亮度略高于底部。我认为扁平化是未来的一种趋势。这种限制是有好处的,这有助于简化思想。同样可以采取更深的一步。顶部的导航条有更多的空间。文字搜索音乐占了整个导航条高度的。 showImg(https://segmentfault.com/img/bVbn06c?w=1000&h=451); 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! 简介 首先...

    anyway 评论0 收藏0
  • 数组平化(将多维数组降维成一维数组

    摘要:将这个问题进行转化将维数组降到维思路构造一个目标数组,初始为空。如果当前项是数组,对当前数组元素进行降维。这是一个典型的递归过程。 将这个问题进行转化 ===> 将N维数组降到(N-1)维 思路:构造一个目标数组,初始为空。遍历N维数组中的每一项。如果当前项不是数组而是单个元素,那么将它保存到目标数组中。如果当前项是数组,对当前数组元素进行降维。这是一个典型的递归过程。 functio...

    Ethan815 评论0 收藏0

发表评论

0条评论

CocoaChina

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<