本文最后编辑于 前,其中的内容可能需要更新。
Method 1:手写递归
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function flatten(arr) { const result = [];
arr.forEach((i) => { if (Array.isArray(i)) result.push(...flatten(i)); else result.push(i); }) return result; }
const problem = [1, 2, 3, [4, 5, [6, 7], 8, 9]];
flatten(problem);
|
Method 2:ES6提供的Array.prototype.flat( ) 方法
1 2 3
| let arr = [10,[1,2],[12,[3,4,[5,6,16]],6,6],7]; arr = arr.flat(Infinity);
|
Method 3:Array.prototype.toString( ) 方法
1 2 3
| let arr = [10,[1,2],[12,[3,4,[5,6,16]],6,6],7]; arr = arr.toString().split(',').map(item => Number(item))
|
Method 4:JSON.stringify( ) 方法
1 2 3
| let arr = [10,[1,2],[12,[3,4,[5,6,16]],6,6],7]; arr = JSON.stringify(arr).replace(/(\[|\])/g, '').split(',').map(item => Number(item))
|
Method 5:Array.prototype.some( ) 方法
1 2 3 4 5
| let arr = [10,[1,2],[12,[3,4,[5,6,16]],6,6],7]; while(arr.some(item => Array.isArray(item))) { arr = [].concat(...arr) }
|
Method 6:Array.prototype.reduce( ) 方法
1 2 3 4 5 6
| function flatten(arr){ var arr = arr || []; return arr.reduce(function(prev, next){ return Object.prototype.toString.call(next) === '[object Array]' ? prev.concat(flatten(next)) : prev.concat(next); },[]) }
|
如有疑问,欢迎添加我的个人微信:
