数组的flat方法

时间:2025-01-20 19:39:32

flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回.

参数: depth 指定要提取的深度,默认为1

返回值:   一个包含将数组于子数组中所有元素的新数组

例子????:

var arr1 = [1, 2, [3, 4]];
();
// [1, 2, 3, 4]

var arr2 = [1, 2, [3, 4, [5, 6]]];
();
// [1, 2, 3, 4, [5, 6]]

var arr3 = [1, 2, [3, 4, [5, 6]]];
(2);
// [1, 2, 3, 4, 5, 6]

//使用 Infinity,可展开任意深度的嵌套数组
var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

flat() 方法会移除数组中的空项:

var arr4 = [1, 2, , 4, 5];
();
// [1, 2, 4, 5]

替代方案:

var arr = [1, 2, [3, 4]];

// 展开一层数组
();
// 等效于
((acc, val) => (val), []);
// [1, 2, 3, 4]

// 使用扩展运算符 ...
const flattened = arr => [].concat(...arr);

reduce+concat+isArray+递归

// 使用 reduce、concat 和递归展开无限多层嵌套的数组
  var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]];
function flatDeep(arr, d = 1) {
   return d > 0 ? ((acc, val) => ((val) ? flatDeep(val, d - 1) : val), [])
                : ();
};
flatDeep(arr1, Infinity);
// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]

总结于: () - JavaScript | MDN