多维数组转化成一维数组
最近正在面试,遇到的一些自己不太清晰的题目所以小记一下,同时刷题前,先确定好关键点再去做这样的途径才好些。例子🌰:1
var a = [1,3,4,5,[6,7,9],[2],[5]];
关键点就是先把数组转化为字符串,之后再把字符串转化成数组,以此达到把多维数组转化为一维数组的目的。
方法一: 使用join()和split()
join() 方法用于把数组中的所有元素放入一个字符串,split() 方法用于把一个字符串分割成字符串数组。1
a = a.join(",").split(",");
相信这种方法大家都知道,也是比较常见的一种方法。
方法二: 使用toString()
toString() 方法可把一个逻辑值转换为字符串,并返回结果。1
a = a.toString().split(",");
方法三: 使用空字符串
1 | a = (a+'').split(','); |
方法四: 使用concat()
1 | [].concat.apply([], a); |
这种方法是新增一个数组利用concat()把数组拍平成一维数组。
方法五: 使用递归和concat方法
1 | let flatten = target => { |
总结
以上的四种方法除了第五种都是一个原理,先把数组转化为字符串,然后在对字符串进行操作,最终达到把多维数组中的数据转化为一维数组的目的。同时这种做法我在vue源码中也见过,大概有个猜测是干嘛的,具体还是得去看下。。