旋转一个数组。
function rotate(array,n){ var l =array.length,a=array.map(function(x){return x}),arr=[]; n=n-Math.floor(n/l)*l; for(var i=0;i<l;i++){ if((i+n)<l&&(i+n)>=0){ arr[i+n]=a[i]; } else if((i+n)>=l){ arr[i+n-l]=a[i]; } else if((i+n)<0){ arr[l+i+n]=a[i]; } } return arr; }
不提后面的遍历,只说那个n=n-Math.floor(n/l)*l;
我就醉了。
solution 主要是用了slice这个方法。
function rotate(array, n) { n = n % array.length return array.slice(-n).concat(array.slice(0, -n)) }