如何将多维数组转换为二维数组?

给定多维数组(任意大小和深度):


const multidimensionalArray = [1, [2, [3, [4, [5]]]], [6], [7, [8], [9]]];

我需要按照下面的示例将其转换为二维数组(其想法是每个嵌套值应转换为所有父项 + 该值的数组)。


预期的二维数组:


const twoDimensionsArray = [

  [1],

  [1, 2],

  [1, 2, 3],

  [1, 2, 3, 4],

  [1, 2, 3, 4, 5],

  [1, 6],

  [1, 7],

  [1, 7, 8],

  [1, 7, 9],

];

你能帮我解决这个问题吗?


蝴蝶刀刀
浏览 152回答 1
1回答

慕侠2389804

对每个嵌套数组的递归调用应该可以解决问题。注意:以下内容对于您的用例来说可能并不完整 - 您的数据需要按特定顺序才能工作 - 但我认为作为示例,这应该足够干净:const customFlatten = (arr, parents = [], output = []) => {  for (const item of arr) {    // If not an array...    if (!Array.isArray(item)) {      parents.push(item) // update parents for recursive calls      output.push(parents.slice(0)) // add entry to output (copy of _parents)    // If an array...    } else {      customFlatten(item, parents.slice(0), output) // recursive call    }  }  return output}console.log(customFlatten([1, [2, [3, [4, [5]]]], [6], [7, [8], [9]]]))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript