今天爱分享给大家带来js中什么是数组扁平化,实现扁平化的方法有哪些【面试题详解】,希望能够帮助到大家。
数组扁平化:一个多维数组变为一维数组,方法如下:
1.flat( ES 6)
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
let newArray = arr.flat([depth]); depth值可选: 指定要提取嵌套数组的结构深度,默认值为 1,不确定层级也可写 `Infinity`。
2.reduce
function flatten(arr) { return arr.reduce((result, item)=> { return result.concat(Array.isArray(item) ? flatten(item) : item); }, []); }
3.String & split
function flatten(arr) { return arr.toString().split(',').map(function(item) { return Number(item); }) }
4.join & split
function flatten(arr) { return arr.join(',').split(',').map(function(item) { return parseInt(item); }) }
5.扩展运算符
[].concat(...[1, 2, 3, [4, 5]]); // [1, 2, 3, 4, 5] 也可以做一个遍历,若 arr 中含有数组则使用一次扩展运算符,直至没有为止,如下: 扩展运算符每次只能展开一层数组 function flatten(arr) { while(arr.some(item=>Array.isArray(item))) { arr = [].concat(...arr); } return arr; }
6.递归
function flatten(arr) { var res = []; arr.map(item => { if(Array.isArray(item)) { res = res.concat(flatten(item)); } else { res.push(item); } }); return res; }