实现数组扁平化
作者:互联网
什么是数组扁平化?
就是将一个嵌套多层的数组转换成只有一层的数组
实现方法:
1.递归实现
var arr = [1,[2,[3,4,5]]] function flatten(arr){ let result = [] for(let i=0;i<arr.length;i++){ if(Array.isArray(arr[i])){ result = result.concat(flatten(arr[i])) }else{ result.push(arr[i]) } } return result } console.log(flatten(arr)) //[1,2,3,4,5]
2.使用reduce函数迭代
var arr = [1,[2,[3,4,5]]] function flatten(arr){ return arr.reduce(function(prev,next){ return prev.concat(Array.isArray(next)?flatten(next):next) },[])// 注意这里需要给prev一个初始值[],否则会采用数组中第一个值作为初始值 } console.log(flatten(arr)) //[1,2,3,4,5]
3.使用扩展运算符
var arr = [1,[2,[3,4,5]]] function flatten(arr){ while(arr.some(item => Array.isArray(item))){ arr = [].concat(...arr) } return arr } console.log(flatten(arr)) //[1,2,3,4,5]
4.使用toString和split实现,(但是转换之后是字符形式)
var arr = [1,[2,[3,4,5]]] function flatten(arr){ return arr.toString().split(',') } console.log(flatten(arr)) //[1,2,3,4,5]
5.调用es6的flat
var arr = [1,[2,[3,4,5]]] function flatten(arr){ return arr.flat(Infinity) } console.log(flatten(arr)) //[1,2,3,4,5]
6.正则和json共同处理(个人不是很推荐,感觉前面的方法够用了)
标签:function,arr,return,扁平化,实现,flatten,数组,var,console 来源: https://www.cnblogs.com/best-mll/p/15142199.html