JS数组扁平化方案

所谓数组扁平就是将多维数组拍扁,变成一维数组,在面试中也是常常问到的问题,方法如下:

我们首先使用一个二维数组进行举例,更多维的操作一致

const array = [[1,2,3],4,[5,6]]

1.调用flat专门方法

array.flat(Infinity);//[1,2,3,4,5,6]

2.Array.from配合toString、split方法

const arr =  Array.from(new Set(array.toString().split(','))).sort((a,b)=>a-b);//[‘1’,'2','3','4','5','6']

3.利用map实现处理

const arr = array.join(',').split(',').map((item)=>{return parseInt(item)})//[1,2,3,4,5,6]

4.既然map可以,我reduce也可以

使用reduce+concat

const arr = array.reduce((pre,cur)=> {return pre.concat(cur)})//[1,2,3,4,5,6]

5.ES6扩展运算符

俗话说,扩展在手,数组不愁

const arr = [].concat(...array);//[1,2,3,4,5,6]

当然实际应用中多半会封装函数,因为直接应用只能降一维,但原理是一样的。目前想到的就这么多,有问题大家可以提出互相交流o( ̄ヘ ̄o#)


3.11添加一个对象扁平化方法

数组都写了,最近学了对象扁平化,看看面试用不用的上......

const obj={

  a:13,

  b:565,

  c:{d:'yo',e:3},

  f:[{g:true,h:5}],

  i:'911'

}


实现

好像不能有空对象值,可以用Object.prototype.toString.call(null)来判断,空对象还是麻烦o(╯□╰)o

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

推荐阅读更多精彩内容

  • 递归循环数组,判断 arr[i] 是否是数组,是数组的话再次调用此函数。const flatten = (arr)...
    欢欣的膜笛阅读 8,939评论 0 1
  • http://www.conardli.top/docs/JavaScript/%E6%95%B0%E7%BB%8...
    Time_Notes阅读 1,235评论 0 0
  • 一. 数组扁平化 数组的 扁平化就是将一个二维或者多维的数组进行处理成一个一维的数组形同var arr = [1,...
    於我阅读 5,161评论 0 1
  • 1.join() (数组转字符串) 数组转字符串,方法只接收一个参数:即默认为逗号分隔符()。 vararr=[1...
    GuessYe阅读 1,215评论 0 0
  • javascript中数组的22种方法 数组总共有22种方法,本文将其分为对象继承方法、数组转换方法、栈和队列方法...
    裁云作舞衣阅读 1,384评论 0 0