Array数组的flat方法实现(2018网易雷火&伏羲前端秋招笔试题)
因为有些浏览器暂时还不支持Array.prototype.flat()方法,手动实现flat数组扁平化处理。
代码展示
Array.prototype.flat = function() {
let arr = [];
this.forEach((item)=>{
if(Array.isArray(item)){
arr=arr.concat(item.flat()) ;
}else{
arr.push(item);
}
})
return arr
}
arr = [[2],[[2,3],[2]],3,4]
let arr1=arr.flat()
console.log(arr1);
运行结果
[Running] node "/Users/sdai/Desktop/huniu/算法/十大经典排序/实现Array的flat()方法.js"
[ 2, 2, 3, 2, 3, 4 ]
[Done] exited with code=0 in 0.085 seconds
最优解(在网上看到的,一行代码就搞定,佩服佩服🐂)
arr.prototype.flat = function() { this.toString().split(',').map(item=> +item ) }
解题思路
- 利用toString()方法将数组类型转化为字符串类型,[[2],[[2,3],[2]],3,4]=>"2,2,3,2,3,4"
- 然后用split()方法使用,分割字符串,再转化为数组,"2,2,3,2,3,4"=>["2","2","3","2","3","4"]
- 最后使用map将数组中的字符串映射为number类型,["2","2","3","2","3","4"]=>[2,2,3,2,3,4]