使用递归: map、reduce
function flatten(arr) { var res = []; arr.map(item => { res = Array.isArray(item) ? res.concat(flatten(item)) : res.push(item); }); return res; }
function flatten(arr) { return arr.reduce((result, item)=> { return result.concat(Array.isArray(item) ? flatten(item) : item); }, []); }
循环,一层一层剥开
function flatten(arr) { while(arr.some(item=>Array.isArray(item))) { arr = [].concat(...arr); } return arr; }
黑科技:join、toString
function flatten(arr) { return arr.join(',').split(',').map(function(item) { return parseInt(item); }) }
function flatten(arr) { return arr.toString().split(',').map(function(item) { return Number(item); }) }
上边这两个代码块表示自己也看不懂,大佬能帮忙解释一下吗?