我对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");我希望它能够将第四个元素的名称带到数组的前面,我不确定这是否可能?我被假定用剪接来做这个方法。谢谢你的帮助?!)
编辑:这个问题不同于其他问题。我不想要一个完整的旋转解决方案,我只想知道是否有可能将第四个元素拼接到开头?
发布于 2015-04-21 16:15:24
尝试在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)));
发布于 2015-04-21 16:19:52
你不需要循环。首先将数组末尾的最后一个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));<div id="result"></div>
https://stackoverflow.com/questions/29777547
复制相似问题