数组拉平函数
[ [ 1000, 2000, 3000 ] , "hello" , [ [ 10 , 20 , 30 ] , [ " a " , " b " , [ " A " , " B " , " C " ] ] , " 小明 " ] , 12313 , [ 101 , 202 , 303 ] ]
==> [ 1000, 2000, 3000 , "hello" , 10 , 20 , 30 , " a " , " b " , " A " , " B " , " C " , " 小明 " , 12313 , 101 , 202 , 303 ]]
/**
* list: 要拉平的数组
* res: 可以将拉平的数组添加到res尾部, 最后返回的结果
* i: 开始拉平的位置
**/
function flat(list, res=[], i=0) {
// 判断list的元素是否是数组
if (list[i] instanceof Array) {
flat(list[i], res, 0); //是数组, 进入递归函数
// 退出递归, 已将当前元素拉平
} else { //不是数组, 添加到res中
res.push(list[i]);
}
//判断当前位置是否是最后一个元素
if (i < list.length - 1) { // 是, 进入递归, 将当前位置的后面几个元素拉平
flat(list, res, i + 1);
}
return res;
}