let a = [1,[2,3]]; a.flat(); // [1,2,3] a.flat(1); //[1,2,3] // depth的值设置为Infinity。 let a = [1,[2,3,[4,[5]]]]; a.flat(Infinity); // [1,2,3,4,5] a是4维数组
2. 利用cancat
查看答案
functionflatten(arr) { var res = []; for (let i = 0, length = arr.length; i < length; i++) { if (Array.isArray(arr[i])) { res = res.concat(flatten(arr[i])); //concat 并不会改变原数组 //res.push(...flatten(arr[i])); //或者用扩展运算符 } else { res.push(arr[i]); } } return res; } let arr1 = [1, 2,[3,1],[2,3,4,[2,3,4]]] flatten(arr1); //[1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
指定deep的flat
只需每次递归时将当前deep1,若大于0,则可以继续展开
查看答案
functionflat(arr, deep) { let res = [] for(let i in arr) { if(Array.isArray(arr[i])&&deep) { res = res.concat(flat(arr[i],deep1)) } else { res.push(arr[i]) } } return res } console.log(flat([12,[1,2,3],3,[2,4,[4,[3,4],2]]],1));