【问题标题】:Push last item to first in an array based on a count [duplicate]根据计数将最后一项推到数组中的第一项[重复]
【发布时间】:2019-05-20 23:57:19
【问题描述】:

我有一个数组,

 var myArray = [ 1,2,3,4,5 ] 

和变量计数,

var count = 5

伪代码:

   if count = 1, output myArray = [5,1,2,3,4]  
   if count = 2, then myArray = [ 4,5,1,2,3] 

等等..

如何在不使用循环的情况下实现这一点?

【问题讨论】:

  • 因为你想改变数组中的每一个元素,any 方法必然会使用一个循环somewhere,即使是在其他一些迭代方法之后抽象出来的
  • 能否正确格式化您的问题
  • arr.slice(count*-1).concat(arr.slice(0,arr.length-count))

标签: javascript arrays


【解决方案1】:

使用pop 删除数组的最后一项,然后使用unshift 将其添加到数组的开头

const count = 2;
const myArray = [ 1,2,3,4,5 ];
for (let i = 0; i < count; i++) {
  myArray.unshift(myArray.pop());
}
console.log(myArray);

【讨论】:

    【解决方案2】:

    您可以使用负索引从末尾开始对数组的最后一部分和第一部分进行切片,然后连接一个新数组。

    function move(array, i) {
        return array.slice(-i).concat(array.slice(0, -i));
    }
    
    var array = [1, 2, 3, 4, 5];
    
    console.log(move(array, 1)); // [5, 1, 2, 3, 4].
    console.log(move(array, 2)); // [4, 5, 1, 2, 3] 
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      猜你喜欢
      • 2020-08-17
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2018-04-19
      • 2014-06-28
      • 2013-01-30
      相关资源
      最近更新 更多