我需要编写一个带两个参数的函数。它将通过弹出一个元素并在数组的开头拼接它来修改数组(are)。它应该重复num次。到目前为止我的尝试:
function rotate(arr, num) {
var i = 0;
while (i<num){
arr.pop();
arr.splice(0, 0, arr.pop());
i++;
}
return arr;
}
console.log(rotate(["Harry","Sarah","Oscar","Tina"],2));
&#13;
答案 0 :(得分:2)
Array::pop()
删除并返回已删除的元素。您只需要使用一次。
正如@Xufox正确提到
通常用arr.unshift(arr.pop())完成;我不确定为什么OP需要在这里使用拼接...
function rotate(arr, num) {
var i = 0;
while (i<num){
arr.unshift(arr.pop());
i++;
}
return arr;
}
console.log(rotate(["Harry","Sarah","Oscar","Tina"],2));
&#13;
答案 1 :(得分:0)
pop
将删除数组的最后一个条目并将其返回。做两次时,你会松开一个条目
function rotate(arr, num) {
var i = 0;
while (i<num){
var x = arr.pop();
arr.splice(0, 0, x);
i++;
}
return arr;
}
console.log(rotate(["Harry","Sarah","Oscar","Tina"],2));
&#13;
答案 2 :(得分:0)
不是告诉我们这个函数现在做了什么,而是一般性地解释函数应该做什么?或者您对示例中的数组有什么期望?
我看到了几件事:
在第4行中,您使用的是arr.pop()
。这是从数组中删除一个项目而不是将其放在任何位置。因此,您的数组少了一个项目。
您再次呼叫arr.pop()
,因此您要从阵列中删除另外一项。
您可以使用splice(0,0...)
代替unshift()
。这将在项目的开头添加一个项目。 (push()
)
你真的需要传递和参数来说明数组应该旋转多少次?您可以根据目的使用阵列的长度吗?
答案 3 :(得分:0)
要实现您的目标,为什么需要pop()
和loop
,只需两次splice()
即可。
arr.splice(0,0, ...arr.splice(arr.length-num));
function rotate(arr, num) {
arr.splice(0,0, ...arr.splice(arr.length-num));
return arr;
}
var arr =["Harry","Sarah","Oscar","Tina"];
rotate(arr, 2);
console.log(arr);
&#13;