Shift array to right in javascript
本问题已经有最佳答案,请猛点这里访问。
我有这个阵列:
1 | var arr1 = ['a1', 'a2', 'a3', 'a4', 'a5']; |
我需要把它右移两个位置,比如
1 | arr1 = ['a4', 'a5', 'a1', 'a2', 'a3']; |
号
这适用于左换档:
1 | arr1 = arr1.concat(arr1.splice(0,2)); // shift left by 2 |
我得到:
1 | arr1 = ['a3', 'a4', 'a5', 'a1', 'a2']; |
。
但我不知道怎么做右移…
这样就在2位置移到你只是在它左移阵列3的位置。
没有理由去实现另一个功能是当你已经有一个。解决方案A是一个环加
你可以使用
1 2 3 4 5 | function shiftArrayToRight(arr, places) { for (var i = 0; i < places; i++) { arr.unshift(arr.pop()); } } |
使用
做右键,和现有的阵列mutate,实际上,你可以这样做:
1 | arr1.unshift.apply(arr1, arr1.splice(3,2)); |
这是variadic
因此,
左移会改写类似于右移,自是variadic:
1 | arr1.push.apply(arr1, arr1.splice(0,2)); |