js多维数组按深度扁平化
时间: 2023-10-07 14:12:46 浏览: 44
您好!感谢您对 ChitGPT 的提问。针对您的问题,我可以给您提供以下的 JavaScript 代码实现多维数组按深度扁平化的方法:
```javascript
function flatten(arr) {
return arr.reduce(function (res, current) {
return Array.isArray(current) ? res.concat(flatten(current)) : res.concat(current);
}, []);
}
```
使用上述方法,您可以对多维数组进行深度扁平化。例如,对于一个三维数组:
```javascript
const arr = [1, [2, [3, 4], 5], 6];
console.log(flatten(arr));
```
输出结果为:
```
[ 1, 2, 3, 4, 5, 6 ]
```
希望这能够帮到您,如果您还有其他问题,欢迎随时询问。
相关问题
多维数组扁平化es6
可以使用 ES6 的扩展运算符和递归来实现多维数组的扁平化,代码如下:
```
const flatten = arr => [].concat(...arr.map(item => Array.isArray(item) ? flatten(item) : item));
```
这个函数接受一个多维数组作为参数,使用 `map` 方法遍历数组中的每个元素。如果某个元素是一个数组,则递归调用 `flatten` 函数对其进行扁平化,否则直接将元素添加到结果数组中。最后使用扩展运算符将结果数组展开返回。
例如,对于以下多维数组:
```
const arr = [1, [2, [3, 4], 5], 6];
```
调用 `flatten(arr)` 的结果将会是:
```
[1, 2, 3, 4, 5, 6]
```
js扁平数组转多维数组
可以使用递归的方法将扁平数组转换为多维数组。以下是一个示例的JavaScript代码:
```javascript
function flatToNested(arr, size) {
if (arr.length === 0) {
return [];
}
const nested = arr.splice(0, size);
return [nested, ...flatToNested(arr, size)];
}
const flatArray = [1, 2, 3, 4, 5, 6];
const nestedArray = flatToNested(flatArray, 2);
console.log(nestedArray); // [[1, 2], [3, 4], [5, 6]]
```
在上面的代码中,`flatToNested`函数接收两个参数,`arr`为扁平数组,`size`为每个子数组的长度。该函数首先检查数组是否为空,如果是,则返回一个空数组。然后使用`splice`方法从原数组中提取出长度为`size`的子数组,并递归调用`flatToNested`处理剩余的元素。最后,将提取的子数组和递归处理的结果合并成一个多维数组。