关于javascript:如何将元素拼接到数组的开头?

How to splice an element to the start of an array?

本问题已经有最佳答案,请猛点这里访问。

我不熟悉JavaScript,我正在尝试创建一个函数,它根据num==to的次数旋转数组。所以如果num = 2["Harry","Sarah","Oscar","Tina"]变成["Oscar","Tina","Harry","Sarah"]

这是迄今为止我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
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");我希望它能够将第四个元素的名称带到数组的前面,我不确定这是否可能?我不想用拼接来做这个方法。谢谢你的帮助?!)

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


尝试在for循环中移动阵列:

1
2
3
4
5
6
7
8
9
10
11
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)));


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

1
2
3
4
5
6
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));
1