首页 > 解决方案 > Javascript中的数组左旋转将记录到控制台但不返回

问题描述

我正在研究 Hackerrank 上的数组左旋转。我拥有的解决方案将 console.log 包含正确结果的数组,但无法使用 return。这是他们网站的详细信息 - “打印一行 n 个空格分隔的整数,表示执行 d 次左旋转后数组的最终状态。” 我读过这个问题可能与在 node.js 中运行的异步函数有关,但我不确定如何解决这个问题。

// sample input - 1 2 3 4 5
// sample output - 5 1 2 3 4

function rotLeft(a, d) {
  var arr = [];

    for (var i = 1; i <= a; i++){
      arr.push(i)
    };
    for (var j = 1; j <= d; j++){
    	arr.shift(arr.push(j))
    }
    console.log(arr.toString()); // <-- this will print the desired output.
    return arr.toString(); // <-- no return from this.
}


rotLeft(5, 4)

标签: javascriptarrays

解决方案


我也一直在尝试解决这个问题。您当前的解决方案存在一些问题。看到您必须创建一个数组并将从参数传递的数组存储在其中。您所做的只是创建一个新数组并添加应该在其中的元素数量的序列,例如a.length=5您正在做的事情arr.push 1 2 3 4 5。但问题需要一系列用户的选择。第二件事是你应该返回一个数组而不是字符串。

所以这是这个问题的解决方案:

function rotLeft(a, d) {
    var arr = [];
    for (var i = 0; i < a.length; i++) {
        arr.push(a[i]);
    };
    for (var j = 1; j <= d; j++) {
        arr.shift(arr.push(arr[0]));
    }
    return arr;
}

推荐阅读