【问题标题】:How to reverse the array with the function reverseArray如何使用函数 reverseArray 反转数组
【发布时间】:2020-12-30 06:03:15
【问题描述】:

给定一个长度为 N 的数组。请开发函数reverseArray来反转数组

例如 输入:[1、2、3、4、5] 输出: 5 4 3 2 1


我的尝试如下:

function printArray (inputArray){
    for(let i = 0; i < inputArray.length; i++){
        console.log(inputArray[i]);
    } 
}

function reverseArray (inputArray){
 
    for (var i = inputArray.length - 1; i >= 0; i--){
       inputArray.push(inputArray[i]);
    }
    
    printArray(inputArray);

}

reverseArray([1, 2, 3, 4, 5]);

但结果是这样的: 1 2 3 4 5 5 4 3 2 1

谁能教我怎么解决,这个问题我纠结了2天

【问题讨论】:

  • 使用新数组推送数据。 inputArray 已经有 1 到 5,因此您获得了重复值。在 reverseArray 函数内部使用类似这样的东西,let newArr = []; 然后在 for 循环内部使用 newArr.push(inputArray[i]); 然后 printArray(newArr);
  • 问题陈述不明确。 “reverseArray to reverse the array”是否意味着数组必须就地反转或者您想要一个新数组?该名称也适用于您想要一个数组,但您给出的输出是一个字符串。

标签: javascript loops


【解决方案1】:

检查 this link

function reverseArr(input) {
    var ret = new Array;
    for(var i = input.length-1; i >= 0; i--) {
        ret.push(input[i]);
    }
    return ret;
}

var a = [3,5,7,8]
var b = reverseArr(a);

【讨论】:

    【解决方案2】:

    您可以使用reverse()join()

    var arr = [1, 2, 3, 4, 5]; 
    arr.reverse(); 
    console.log(arr.join(' '));

    【讨论】:

      【解决方案3】:
      1. 使用 for 循环:

      function printArray (inputArray){
          for(let i = 0; i < inputArray.length; i++){
              console.log(inputArray[i]);
          } 
      }
      
      function reverseArray (inputArray){
          var results = [];
          for (var i = inputArray.length - 1; i >= 0; i--){
             results.push(inputArray[i]);
          }
          
          printArray(results);
      
      }
      
      reverseArray([1, 2, 3, 4, 5]);
      1. 用户数组的反转方法:

          function printArray (inputArray){
              for(let i = 0; i < inputArray.length; i++){
                  console.log(inputArray[i]);
              } 
          }
      
          function reverseArray (inputArray){
              var results = [];
              results = inputArray.reverse();
              
              printArray(results);
      
          }
      
          reverseArray([1, 2, 3, 4, 5]);

      【讨论】:

        【解决方案4】:

        对您的基本代码进行一些更改。它可能更简单,但我认为您需要的是inplace reverse

        function printArray(inputArray) {
          for (let i = 0; i < inputArray.length; i++) {
            console.log(inputArray[i]);
          }
        }
        
        function reverseArray(inputArray) {
          const tempArr = inputArray.slice();
          inputArray.splice(0, inputArray.length);
          for (var i = tempArr.length - 1; i >= 0; i--) {
            inputArray.push(tempArr[i]);
          }
        
          printArray(inputArray);
        }
        
        reverseArray([1, 2, 3, 4, 5]);

        【讨论】:

          【解决方案5】:

          有很多方法可以做到这一点。数组也有逆向方法。

          function reverseArray(inputArray) {
            let start = 0;
            let end = inputArray.length -1;
          
            while (start < end) {
              const tmp = inputArray[start];
              inputArray[start] = inputArray[end];
              inputArray[end] = tmp;
              start++;
              end--;
            }
          }
          
          arr = [1, 2, 3, 4, 5];
          reverseArray(arr);
          console.log(arr);

          【讨论】:

            【解决方案6】:

            很简单,你可以使用javascript方法“reversed()”

            或者你可以使用这个功能

            function reverse(input) {
                var ret = new Array;
                for(var i = input.length-1; i >= 0; i--) {
                    ret.push(input[i]);
                }
                return ret;
            }
            
            var arr = [3,5,7,8]
            var b = reverse(arr)
            
            console.log(b)

            【讨论】:

              【解决方案7】:

              保留数组最简单的方法是使用Array.reverse; 但是如果你想自己做,你可以这样做:

              function reserveArray (input){
                       for (let i =0;i<input.length;i++){
                       input.unshift(input.pop())
                      }
                  }

              这只是一个想法,我不测试它是否按预期运行。

              【讨论】:

                【解决方案8】:

                您可以遍历一半的数组并交换 [i] 和 [inputArray.length-1-i]。

                function reverseArray(a) {
                    for(let i = 0; i < Math.floor(a.length / 2); i++) {
                        [a[i], a[a.length - 1 - i]] = [a[a.length - 1 - i], a[i]];
                    }
                }
                

                如果输出真的是一个字符串(与数组相反),只需打印从末尾开始的元素:

                function reverseArray(a) {   
                    for(let i = a.length - 1; i >= 0; i--) {
                        process.stdout.write(a[i].toString()  + (i ? " " : ""));
                    }
                }
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2018-07-17
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-05-16
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-02-14
                  相关资源
                  最近更新 更多