Array.flat 实现
var arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]
解法
注意第一次写上来就用了map, 是不可以的,原因是输出只有一层[ ],中间的迭代不能产生数组
Array.prototype.flat = function() {
var arr = [];
this.forEach((item,idx) => {
if(Array.isArray(item)) {
arr = arr.concat(item.flat()); //递归去处理数组元素
} else {
arr.push(item) //非数组直接push进去
}
})
return arr; //递归出口
}
666的解法
仅针对面试题
Array.prototype.flat = function (){
this.toString().split(',').map(item=> +item )
}
过程:
toString方法,连接数组并返回一个字符串
'2,2,3,2,3,4'
split方法分割字符串,变成数组
['2','2','3','2','3','4']
map方法,将string映射成为number类型
2,2,3,2,3,4
最后更新于
这有帮助吗?