笔试题:JS翻转数组

610 阅读1分钟

JS翻转数组方式

JS翻转数组方式有很多,这里我做一个简单总结。

方法1、直接采取JS提供的API:Array.prototype.reverse

方法2、采用空间+循环+push

方法3、采用空间+循环+unshift

方法4、采用就地翻转

1、直接采取JS提供的API:Array.prototype.reverse

let arr = [1,2,3,4,5]
arr.reverse()
// arr = [5,4,3,2,1]

//or

let arr = [1,2,3,4,5]
Array.prototype.reverse.call(arr)
// arrr = [1, 2, 3, 4, 5]

方法2、采用空间+循环+push

function reverse(arr){
    let len = arr.length
    let result = []
    let index = len-1
    while(index>=0){
        result.push(arr[index])
        index--
    }
    return result
}
let arr = [1,2,3,4,5]
let a = reverse(arr)
// a=[5, 4, 3, 2, 1]
// 原数组不改变
// arr = [1, 2, 3, 4, 5]

方法3、采用空间+循环+unshift

function reverse(arr){
    let result = []
    let length = arr.length
    let index=0
    while( index < length){
        result.unshift(arr[index])
        index++
    }
    return result
}
let arr = [1,2,3,4,5]
let a = reverse(arr)
// a=[5, 4, 3, 2, 1]
// 原数组不改变
// arr = [1, 2, 3, 4, 5]

方法4、采用就地翻转

function reverse(arr) {
    for (let i = 0; i < Math.floor(arr.length / 2); i++) {
        // 解构
        [arr[i], arr[arr.length - 1 - i]] = [arr[arr.length - 1 - i], arr[i]]
    }
}
let arr = [1,2,3,4,5]
reverse(arr)
// arr