反转数组

Posted 好_快

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反转数组相关的知识,希望对你有一定的参考价值。

1、直接反转

    function reverse(arr) 
        //拷贝一下数据,防止改变原数组
        const copyArr = [...arr];
        /*
         * 反转过程
         * 1、copyArr[0] 和 copyArr[7] 交换 (copyArr.length - 1 - 0)
         * 2、copyArr[1] 和 copyArr[6] 交换 (copyArr.length - 1 - 1)
         * 3、copyArr[2] 和 copyArr[5] 交换 (copyArr.length - 1 - 2)
         * 4、copyArr[3] 和 copyArr[4] 交换 (copyArr.length - 1 - 3)
         * 总共交换4次,数组长度的一半
         * copyArr[i] 和 copyArr[copyArr.length - 1 - i]
         * */
        for (let i = 0; i < copyArr.length / 2; i++) 
            const tempItem = copyArr[i];
            copyArr[i] = copyArr[copyArr.length - 1 - i];
            copyArr[copyArr.length - 1 - i] = tempItem;
        
        return copyArr;
    

2、借助一个新的数组

    function reverse(arr) 
        /*
         * 反转过程
         * 1、copyArr[0] 保存 arr[7]  (arr.length - 1 - 0)
         * 2、copyArr[1] 保存 arr[6]  (arr.length - 1 - 1)
         * 3、copyArr[2] 保存 arr[5]  (arr.length - 1 - 2)
         * 4、copyArr[3] 保存 arr[4]  (arr.length - 1 - 3)
         * 5、copyArr[4] 保存 arr[3]  (arr.length - 1 - 3)
         * 6、copyArr[5] 保存 arr[2]  (arr.length - 1 - 3)
         * 7、copyArr[6] 保存 arr[1]  (arr.length - 1 - 3)
         * 8、copyArr[7] 保存 arr[0]  (arr.length - 1 - 3)
         *
         * 总共交换8次,数组长度
         * copyArr[i] 和 arr[copyArr.length - 1 - i]
         * */
        const copyArr = [];
        for (let i = 0; i < arr.length; i++) 
            copyArr[i] = arr[arr.length - 1 - i];
        
        return copyArr;
    

3、使用 reverse 函数

    const dataArr = [1, 2, 3, 4, 5, 6, 7, 8];
    //拷贝数组,防止操作原数组
    const copyArr = [...dataArr];
    //调用函数
    const reverseArr = copyArr.reverse();
    console.log(reverseArr);
    console.log(copyArr);

代码链接

以上是关于反转数组的主要内容,如果未能解决你的问题,请参考以下文章

数组元素的反转

数组中元素的反转,插入,及升序降序(冒泡)

数组旋转

如何反转字符串数组并使用指针反转每个字符串?

php实现数组反转

PHP 数组键与值反转的方法 array_flip()