我想知道旋转 JavaScript 数组的最有效方法是什么。
我想出了这个解决方案,其中正数n
将数组向右旋转,负数n
向左旋转( -length < n < length
) :
Array.prototype.rotateRight = function( n ) {
this.unshift( this.splice( n, this.length ) );
}
然后可以这样使用:
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
months.rotate( new Date().getMonth() );
我上面的原始版本有一个缺陷,正如Christoph在下面的评论中指出的那样,正确的版本是(额外的返回允许链接):
Array.prototype.rotateRight = function( n ) {
this.unshift.apply( this, this.splice( n, this.length ) );
return this;
}
是否有更紧凑和/或更快的解决方案,可能在 JavaScript 框架的上下文中?(以下建议的版本都不是更紧凑或更快)
有没有内置数组旋转的 JavaScript 框架?(仍然没有人回答)