糊糊桃 2023-02-09 19:22 采纳率: 50%
浏览 44
已结题

请问js怎么实现找到多维数组指定某个维度的项??

// let arr = [1, 2, 3, [4, 5, [6, [7, 8]]]]
// 比如
// 查找第二维度[4, 5, [6, [7, 8]]]
// 查找第三维度[6,[7,8]]


let arr = [1, 2, [3, 4, [5, 6, [7, 8]]]]
const arrFlat = (arr, val) => {
  if (val <= 1) return arr
  for (let i = 0; i < arr.length; i++) {
    const item = arr[i]
    if (Array.isArray(item)) return arrFlat(item, --val)
  }
  return []
}
console.log(arrFlat(arr, 2)) // [3, 4, [5, 6, [7, 8]]]]
console.log(arrFlat(arr, 3)) // [5, 6, [7, 8]] 

  • 写回答

4条回答 默认 最新

  • 糊糊桃 2023-02-10 20:08
    关注

    问了下原公司的老大,帮忙给出了答案,记录一下~

    
    ```javascript
    let arr = [1, 2, [3, 4, [5, 6, [7, 8]]]]
    const arrFlat = (arr, val) => {
      if (val <= 1) return arr
      for (let i = 0; i < arr.length; i++) {
        const item = arr[i]
        if (Array.isArray(item)) return arrFlat(item, --val)
      }
      return []
    }
    console.log(arrFlat(arr, 2)) // [3, 4, [5, 6, [7, 8]]]]
    console.log(arrFlat(arr, 3)) // [5, 6, [7, 8]] 
    

    ```

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月18日
  • 已采纳回答 2月10日
  • 修改了问题 2月10日
  • 创建了问题 2月9日

悬赏问题

  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 Macbookpro 连接热点正常上网,连接不了Wi-Fi。
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题