【问题标题】:How to splice an element to the start of an array? [duplicate]如何将元素拼接到数组的开头? [复制]
【发布时间】:2015-06-28 22:18:18
【问题描述】:

我是 Javascript 新手,我正在尝试创建一个函数,该函数根据 num === 的次数来旋转数组。所以如果num = 2["Harry", "Sarah", "Oscar", "Tina"]变成["Oscar", "Tina", "Harry", "Sarah"]

到目前为止,这是我的代码:

var count = 0;

function rotate(arr, num) {
  while (count < num) {
    arr.splice(0,0, "Tina");
    arr.pop();
    count++
  }
  return arr
}

console.log(rotate(["Harry", "Sarah", "Oscar", "Tina"], 2));

对于这条线 - arr.splice(0,0, "Tina");我希望它能够将第四个元素的名称带到数组的前面,我不确定这是否可能?我应该使用拼接来执行此方法。谢谢你的帮助?! :)

编辑:这个问题与其他问题不同。我不想要一个完整的旋转解决方案,我只想知道是否可以将第四个元素拼接到开头?

【问题讨论】:

标签: javascript


【解决方案1】:

尝试在for 循环中移动数组:

function rotate(arr, num){
    for(var i = 0; i < num; i++){
        item = arr[arr.length-1]
        arr.splice(arr.length-1, 1);
        arr.unshift(item)
    }
    return arr
}

alert(JSON.stringify(rotate(["Harry", "Sarah", "Oscar", "Tina"], 2)));
alert(JSON.stringify(rotate(["Harry", "Sarah", "Oscar", "Tina"], 1)));

【讨论】:

  • 这行得通,谢谢:)
  • @AustinEdwards 没问题 :)
  • 我不相信这是正确的实现,它只是巧合地产生了2 的预期结果。但是对于1,它会产生Sarah,Oscar,Tina,Harry,而不是Tina, Harry, Sarah, Oscar——根据我对的解释,这似乎是OP真正想要的,“我希望它能够带来任何名称数组前面的第四个元素,”
  • @FelixKling 啊,我猜我的代码被切换了,让我编辑一下。
  • (再说一遍,我对 OP 的问题不是 100% 清楚)
【解决方案2】:

您不需要循环。首先将最后一个 num 元素拼接到数组的末尾,然后将它们全部拼接到前面。

function rotate(arr, num) {
        var lastN = arr.splice(-num, num);
        [].splice.apply(arr, [0, 0].concat(lastN));
        return arr;
    }
document.getElementById("result").innerHTML = JSON.stringify(rotate(["Harry", "Sarah", "Oscar", "Tina"], 2));
&lt;div id="result"&gt;&lt;/div&gt;

【讨论】:

    猜你喜欢
    • 2015-02-22
    • 1970-01-01
    • 2011-10-29
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 2020-03-12
    • 1970-01-01
    相关资源
    最近更新 更多