很无力,很多时候!卷的太厉害。
第一种:Array.flat(Infinity)
作死打法,一开口,估计面试官就会想,就这,只会这儿?
const flatArray = arr => {
return arr.flat(Infinity);
}
跑下测试:
第二种:递归
常规手段!什么叫递归?(别问,我不想说,凭什么什么都要问)。
const flatArray = arr => {
let ret = [];
arr.forEach(item => {
if (Array.isArray(item)) {
ret = ret.concat(flatArray(item));
} else {
ret.push(item);
}
});
return ret;
}
Test:
第三种:Stack
栈,一个字。
const flatArray = arr => {
const ret = [];
let stack = [...arr]
while (stack.length) {
const item = stack.pop();
if (Array.isArray(item)) {
stack.push(...item);
} else {
ret.unshift(item);
}
}
return ret;
}
Test:
第四种
你以为就结束了!?
后退,我要开始装 * 了!
const flatArray = arr => {
return arr.toString().split(',').map(num => +num);
}
Test:
给你个大嘴巴子!
________________
< '信不信我弄你' >
----------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
我:你又没给别的数据结构!!!!我不可以这样写?