我是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来做这个方法。谢谢你的帮助?! :)
编辑:此问题与其他问题不同。我不想要一个完整的旋转解决方案,我只是想知道是否可以将第四个元素拼接到开头?
答案 0 :(得分: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)));
&#13;
答案 1 :(得分:0)
你不需要循环。首先将最后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));
&#13;
<div id="result"></div>
&#13;