// 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]
也可以使用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 个数组时返回该数组。
不知道你这个问题是否已经解决, 如果还没有解决的话: