再也不会被面试官问倒了!
一. ES6 flat
function myFlat(a) {
return a.flat(Infinity)
}
二. 转换成字符串
//一种方式,利用数组转化为字符串会去掉中括号
// 利用正则也可以
function myFlat(arr) {
return arr.join(',').split(',').map(a => parseFloat(a))
}
function myFlat(arr) {
return arr.toString().split(',').map(a => Number(a))
}
三. 循环 + 递归
// 展开用concat和展开运算符都可以
//各种循环都可以辣
function myFlat(arr) {
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? myFlat(cur) : cur)
}, [])
}
四. while+some,不用递归,迭代即可
function myFlat(arr) {
while (arr.some(i => Array.isArray(i))) {
arr = [].concat(...arr)
}
return arr
}
记录记录!