请问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]] 

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


```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]] 

```


1. 使用Array.prototype.map()

可以使用map方法,将每一个数组中的元素映射到一个新的数组中,然后可以根据指定的维度获取新数组中的元素。

示例:

```javascript
var array = [[1,2,3], [4,5,6], [7,8,9]];

// 获取第二维度的项
var result = array.map(function(item){
    return item[1];
});

console.log(result); // [2, 5, 8]
  1. 使用Array.prototype.reduce()

也可以使用reduce方法,将多维数组中的元素累加到一个新的数组中,然后可以根据指定的维度获取新数组中的元素。

示例:

var array = [[1,2,3], [4,5,6], [7,8,9]];

// 获取第二维度的项
var result = array.reduce(function(acc, curr){
    return acc.concat(curr[1]);
}, []);

console.log(result); // [2, 5, 8]

可以使用递归函数来遍历多维数组并找到所需的项。具体实现方法如下:

let arr = [1, 2, 3, [4, 5, [6, [7, 8]]]]

function findArray(array, index) {
    for (let i = 0; i < array.length; i++) {
        if (Array.isArray(array[i])) {
            return findArray(array[i], index);
        }
    }
    return array;
}

let result1 = findArray(arr, 3);
console.log(result1);  // [4, 5, [6, [7, 8]]]

let result2 = findArray(result1, 2);
console.log(result2);  // [6, [7, 8]]

在这个代码中,创建了一个名为 findArray 的递归函数,它在数组中进行搜索,并在找到第 index 个数组时返回该数组。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^