- 语法: flatten(array)
 - 取出嵌套数组(多维)中的所有元素放到一个新数组(一维)中
 - 如: [1, [3, [2, 4]]] ==> [1, 3, 2, 4]
 
ES2019 方法 flat(depth) 深度,默认值为 1。
- flat() 方法会移除数组中的空项
 - 使用 Infinity,可展开任意深度的嵌套数组 ```javascript var arr = [1, 2, [3, 4]];
 
// 展开一层数组 arr.flat(); // 等效于 arr.reduce((acc, val) => acc.concat(val), []); // [1, 2, 3, 4]
// 使用扩展运算符 … const flattened = arr => [].concat(…arr);
```javascript// 方法1:ES6中 Array.prototype.flat()console.log(arr.flat(Infinity))// 方法2:迭代的思路function flat(arr, depth = 1) {while (arr.some((item) => Array.isArray(item)) && depth > 0) {arr = [].concat(...arr);depth--;}return arr;}// 方法3:递归function flat(arr, depth = 1) {let result = [];function _loop(arr) {arr.forEach((item) => {if (Array.isArray(item) && depth > 0) {_loop(item, depth--);} else {result.push(item);}});}_loop(arr);return result;}// 方法4:reduce + 递归function flat(arr, depth = 1) {return d > 0? arr.reduce((acc, val) =>acc.concat(Array.isArray(val) ? flat(val, depth - 1) : val),[]): arr.slice();}// toStringfunction flat (arr) {return arr.toString().split(',').map(item => Number(item)) //转成字符串会只有一个逗号相隔}console.log(flat(arr))// stringifyfunction flat (arr) {let str = JSON.stringify(arr)str = str.replace(/\[|\]/g, '') //去掉中括号return str.split(',').map(item => Number(item)))}console.log(flat(arr))
