将数组拍平的方法记录(tx笔试)

348 阅读1分钟

一、for循环+递归

function flat(){
    let flatArray=[];
    return function flateen(array){
        for(let i=0;i<array.length;i++){
            if(Array.isArray(array[i])){
                flateen(array[i])
            }else{
                flatArray.push(array[i])
            }
        }
        return flatArray;
    }
}
let testArray=[1,2, [3,[4,5,6]],7]
console.log(flat()(testArray))

二、使用字符串处理方法


function flat(arr) {
  return arr.toString().split(',').map(val => +val)
}
let testArray=[1,2, [3,[4,5,6]],7]
console.log(flat(testArray))

三、使用reduce+扩展运算符


function flat(arr) {
  return arr.reduce((pre, value) => {
    return Array.isArray(value) ? [...pre, ...flat(value)] : [...pre, value]
  }, [])
}
let testArray=[1,2, [3,[4,5,6]],7]
console.log(flat(testArray)