旋转JavaScript中数组中的元素-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

旋转JavaScript中数组中的元素

2020-02-09 11:56:06 275 1

我想知道旋转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() ); 正如克里斯托夫在下面的评论中指出的那样,我上面的原始版本有一个缺陷,那就是正确的版本(附加返回值允许链接):

Array.prototype.rotateRight = function( n ) { this.unshift.apply( this, this.splice( n, this.length ) ); return this; } 是否有可能在JavaScript框架中更紧凑和/或更快速的解决方案? 问题来源于stack overflow

取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2020-02-09 11:56:20

    类型安全的通用版本,可更改数组:

    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;
    };
    

    })();

    0 0
相关问答

1

回答

Javascript中的反向数组而不更改原始数组

2020-02-06 22:47:56 219浏览量 回答数 1

1

回答

Javascript中的反向数组而不更改原始数组

2020-02-06 22:47:45 1103浏览量 回答数 1

1

回答

javascript对象属性的命名规则是什么?

2021-10-27 21:29:52 152浏览量 回答数 1

1

回答

JavaScript 类数组对象的定义?

2020-04-04 10:34:37 590浏览量 回答数 1

2

回答

Javascript 中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?

2020-04-03 15:28:58 811浏览量 回答数 2

1

回答

Javascript对象如何从函数内部获取密钥

2020-03-22 22:27:58 308浏览量 回答数 1

1

回答

如何将JavaScript对象的属性值提取到数组中?

2020-02-09 12:58:43 292浏览量 回答数 1

1

回答

我是否已达到浏览器中JavaScript可以处理的对象大小的限制?

2020-02-09 13:12:49 273浏览量 回答数 1

1

回答

对象是否以javascript的深层或浅层副本推送到数组中?

2020-02-08 22:00:58 287浏览量 回答数 1

1

回答

JavaScript 怎么删除一个对象的样式中的某个属性?

2016-06-12 15:40:51 2456浏览量 回答数 1
66
文章
12595
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载