如何将元素拼接到数组的开头?

时间:2015-04-21 16:06:03

标签: javascript

我是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");我希望它能够将第四个元素的名称带到数组的前面,我不确定这是否可行?我倾向于使用splice来做这个方法。谢谢你的帮助?! :)

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

2 个答案:

答案 0 :(得分:1)

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

&#13;
&#13;
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)));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

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

&#13;
&#13;
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));
&#13;
<div id="result"></div>
&#13;
&#13;
&#13;