【问题标题】:Reverse an integer array using same array variable [duplicate]使用相同的数组变量反转整数数组[重复]
【发布时间】:2021-08-19 19:10:29
【问题描述】:

我想使用相同的变量array 来输出反向整数数组。但是,我只打印了第一个值。不知道我哪里做错了。 这是我的代码:

let array = [3, 8, 9, 6, 4, 2]
reverseArray(array);
function reverseArray(array){
    let left =0;
    for(i =  0; i <= array.length - 1; i++){
        let right = array.length - 1 - i;
        let temp = right;
        right = left;
        left = temp;
        array = array[left];
    }
    console.log(array);
}

【问题讨论】:

  • array = array[left];??
  • 可能是错字吗? array = array[left]; 应该是 array[right] = array[left];

标签: javascript


【解决方案1】:

假设这是一个学习练习,请注意您的迭代次数过多:

function reverseArray(array){
    const len = array.length;

    for (let i = 0; i < len/2; ++i) {
        const temp = array[i];
        const tail = len - i - 1;
        array[i] = array[tail];
        array[tail] = temp;
    }
}

const array = [3, 8, 9, 6, 4, 2];
reverseArray(array);
console.log(array);

正如其他人指出的那样,截断的原因是您将数组元素分配给 array 变量,将其从数组转换为标量。

“在现实生活中”,你应该使用array.reverse()

【讨论】:

    【解决方案2】:

    这是因为您通过 array = array[left] 将数组设置为单个值。

    您只需覆盖数组变量并在其中放置一个元素。

    将此行更改为array[right] = array[left] 将是一个好的开始。

    如果你想修复这一切,你只需要遍历数组的一半(这样你就不会将它反转两次 - 恢复正常),并进行整个交换(不仅仅是替换一个元素):

    let array = [3, 8, 9, 6, 4, 2]
    reverseArray(array);
    function reverseArray(array){
        for(i =  0; i < array.length / 2; i++){
            let right = array.length - 1 - i;
            let temp = array[right];
            array[right] = array[i];
            array[i] = temp;
        }
        console.log(array);
    }

    注意:如果你想反转一个数组,你可以像这样简单地使用array prototype "reverse" 函数:

    let array = [3, 8, 9, 6, 4, 2];
    array = array.reverse();
    
    console.log(array);

    【讨论】:

    • array[right] = array[left] 这不是有效的结果!!!只需运行并检查您的结果
    • 我知道,只是说这将是一个不错的开始,现在的问题是他只交换了一个元素(他还应该保存right元素并放在@987654328 @索引
    【解决方案3】:

    实际上你改变了索引,所以right用来存储索引而不是值,在最后一行array = array[left]是你试图给出价值,那就是array[0] = 1 所以这就是为什么1来了 这样做的正确方法

    let array = [3, 8, 9, 6, 4,2]
    reverseArray(array);
    
    function reverseArray(array){
    for(i =  0; i <= (array.length - 1)/2; i++){// need to iterate only half otherwise it remain same so for exampale 0th index replace with 4th index and 4th with 0 so at last both at their same position
        let right = array.length - 1 - i;
        let temp = array[right];
        array[right] = array[i];
        array[i] = temp;
    
    }
    console.log(array);}
    

    【讨论】:

      【解决方案4】:

      只需在 NodeJs 函数中使用 build:

      array.reverse()
      

      【讨论】:

        【解决方案5】:

        你实际上做错的是

        array = array[left]
        

        等式的右侧是特定索引处的数组值,而该数组的右侧是整个数组

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-02-10
          • 2018-09-17
          • 1970-01-01
          • 1970-01-01
          • 2015-04-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多