【JS-手写】数组深反转

54 阅读1分钟

前置知识

arr.reverse() 实现的只是浅反转,只会反转第一维的数据

let arr = [1, [2, 3], [4, 5, [6, 7, 8]]]
const arrRev = arr.reverse()
console.log(arr)  // [[4, 5, [6, 7, 8]], [2, 3], 1]
// 注意:reverse() 方法会改变原数组
console.log(arrRev) // [[4, 5, [6, 7, 8]], [2, 3], 1]

手写深反转

const deepReverse = (arr) => {
    let temp = arr.reverse()
    temp.forEach(val => {
        if(Object.prototype.toString.call(val) === "[object Array]"){
            deepReverse(arr)
        }
    })
    return temp
}    
let arr = [1, [2, 3], [4, 5, [6, 7, 8]]]
console.log(arr)  // [[[8, 7, 6], 5, 4], [3, 2], 1]