已知如下数组:var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
编写一个程序fn(array, max)将数组扁平化操作,入参max决定扁平化操作次数。
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]
function flat(target, maxCount){
// 检查入参类型
if(!(target instanceof Array) || typeof maxCount !== 'number') {
throw new Error('Params Type Error')
}
let count = 0; // 记录扁平化次数
function execute(origin){
count ++
const arr = origin.reduce((x,y)=>[...x,...y instanceof Array ? y : [y]],[]) // 执行扁平化操作
return count > maxCount ? arr : execute(arr) // 次数已到上限返回结果,否则继续扁平化
}
return execute(target)
}
flat(arr,1)