我正在尝试获取一个数组并让它循环自己。我已经找到了一个简单的解决方案,让它向后循环:
array = ['Dog', 'Cat', 'Animal', 'Pig']
array[array.length] = array[0];
array.shift();
正如预期的那样,结果是[' Cat',' Animal',' Pig',#39; Dog']。我怎么能以类似的方式做相反的事情。通过相反的方式,我的意思是[' Pig',' Dog',' Cat',' Animal']。我试图找到与.shift()相反的但却无法找到任何东西。谢谢你的时间。
答案 0 :(得分:1)
你可以Array#pop
pop()
方法从数组中删除最后一个元素并返回该元素。此方法更改数组的长度。
unshift()
方法将一个或多个元素添加到数组的开头,并返回数组的新长度。
var array = ['Dog', 'Cat', 'Animal', 'Pig'];
array.push(array.shift());
console.log(array); // ["Cat", "Animal", "Pig", "Dog"]
array = ['Dog', 'Cat', 'Animal', 'Pig'];
array.unshift(array.pop());
console.log(array); // ["Pig", "Dog", "Cat", "Animal"]

答案 1 :(得分:0)
看起来您正在寻找rotate
功能:
Array.prototype.rotate = (function() {
// save references to array functions to make lookup faster
var push = Array.prototype.push,
splice = Array.prototype.splice;
return function(count) {
var len = this.length >>> 0, // convert to uint
count = count >> 0; // convert to int
// convert count to value in range [0, len)
count = ((count % len) + len) % len;
// use splice.call() instead of this.splice() to make function generic
push.apply(this, splice.call(this, 0, count));
return this;
};
})();
a = [1,2,3,4,5];
a.rotate(1);
console.log(a.join(',')); //2,3,4,5,1
a.rotate(-1);
console.log(a.join(',')); //1,2,3,4,5
a.rotate(-1);
console.log(a.join(',')); //5,1,2,3,4