- 递归
function flatten(arr) {
var result = []
function inFlatten(arr) {
if(arr.__proto__ === Array.prototype) {
for (var index = 0; index < arr.length; index++) {
inFlatten(arr[index])
}
} else {
result.push(arr)
}
}
inFlatten(arr)
return result
}
const flatten = (arr) => {
let result = []
arr.forEach(item => {
if(Array.isArray(item)) {
result = result.concat(flatten(item))
} else {
result.push(item)
}
});
return result
}
- toString
const flatten = (arr) => {
return arr.toString().split(',').map(item => +item)
}
- reduce
const flatten = (arr) => {
return arr.reduce((prev, next) => {
return prev.concat(Array.isArray(next) ? flatten(next): next)
}, [])
}
- 扩展运算符(一层一层展开)
const flatten = (arr) => {
while(arr.some(item => Array.isArray(item))){
arr = [].concat(...arr)
}
return arr
}