打平数组
ts
// 考虑递归数组
function myFlat(arr: Array<unknown>): unknown[] {
const cache = new WeakMap<any, any>()
function _myFlat(arr: Array<unknown>): unknown[] {
if (!Array.isArray(arr)) return [arr]
if (cache.has(arr)) {
throw new Error('递归数组!')
}
const result: unknown[] = []
cache.set(arr, result)
for (const a of arr) {
if (Array.isArray(a)) {
const temp = _myFlat(a)
result.push(...temp)
} else {
result.push(a)
}
}
return result
}
return _myFlat(arr)
}
function easyFlat(arr: Array<unknown>): unknown[] {
return arr.reduce((prev: unknown[], cur:unknown) => Array.isArray(cur) ? [...prev, ...easyFlat(cur)] : [...prev, cur], [])
}