数组拉平函数

数组拉平函数

[ [ 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;
}
上一篇:js 将二维数组转为一维数组


下一篇:TBBT.10.5