gpt4 book ai didi

javascript - 在 JavaScript 中旋转数组中的元素

转载 作者:行者123 更新时间:2023-11-28 07:25:02 25 4
gpt4 key购买 nike

我想知道旋转 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 框架? (仍然没有人回答)

最佳答案

您可以使用 push()pop()shift()unshift() 方法:

function arrayRotate(arr, reverse) {
if (reverse) arr.unshift(arr.pop());
else arr.push(arr.shift());
return arr;
}

用法:

arrayRotate([1, 2, 3, 4, 5]);       // [2, 3, 4, 5, 1];
arrayRotate([1, 2, 3, 4, 5], true); // [5, 1, 2, 3, 4];

如果您需要 count 参数,请参阅我的其他答案:
https://stackoverflow.com/a/33451102 🖤🧡💚💙💜

关于javascript - 在 JavaScript 中旋转数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29775123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com