隐藏用户y 2024-05-14 19:40 采纳率: 64.4%
浏览 4
已结题

关于#javascript#的问题:rotate函数中将原始数组翻转,然后使用slice切割成两部分各自翻转,let numsOne = nums.slice(0, k)

rotate函数中将原始数组翻转,然后使用slice切割成两部分各自翻转,let numsOne = nums.slice(0, k);之后debugger发现numsOne是undefined,原因是什么呢?

<script>
    window.onload = function () {
        var rotate = function () {
            let nums = [1, 2, 3, 4, 5, 6, 7];
            let k = 3;
            let n = nums.length;
            reverseArray(nums);
            k %= n;
            let numsOne = nums.slice(0, k);//这里debugger显示numsOne为undefined
            let numsTwo = nums.slice(k, nums.length);
            numsOne = reverseArray(numsOne);
            numsTwo = reverseArray(numsTwo);
            console.log(numsOne);
            debugger;
            let result = numsOne.push(numsTwo);
            return result;
            console.log(result)
        };
        // 下面是我DIY的翻转数组的方法
        function reverseArray(nums) {
            let left = 0;
            let right = nums.length - 1;

            while (left < right) {
                let temp = nums[left];
                nums[left] = nums[right];
                nums[right] = temp;
                left++;
                right--;
            }
        }
        rotate();
    }
</script>

img

  • 写回答

3条回答 默认 最新

  • 隐藏用户y 2024-05-14 21:25
    关注

    结合上面的细致回答总结出正确答案为如下代码

    
    ```html
    <script>
        window.onload = function () {
            var rotate = function () {
                let arr = [1, 2, 3, 4, 5, 6, 7];
                let k = 3;
                let n = arr.length;
    
                // 修改 k 的值,确保它小于数组长度
                k %= n;
    
                let nums = arr.reverse();
                // 在调用 reverseArray 之前使用 slice 分割数组
                let numsOne = nums.slice(0, k);
                let numsTwo = nums.slice(k, n);
    
                // 翻转分割后的数组
                numsOne = reverseArray(numsOne);
                numsTwo = reverseArray(numsTwo);
    
                // 合并翻转后的数组
                let result = numsOne.concat(numsTwo);
                return result;
            };
    
            function reverseArray(nums) {
                for (let i = 0; i < Math.floor(nums.length / 2); i++) {
                    let temp = nums[i];
                    nums[i] = nums[nums.length - 1 - i];
                    nums[nums.length - 1 - i] = temp;
                }
                return nums; // 返回翻转后的数组
            }
    
            console.log(rotate());
        };
    
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月22日
  • 已采纳回答 5月14日
  • 创建了问题 5月14日