javascript循环移动数组

<!doctype html>
<head>
    <meta charset = "utf-8" />
</head>

<body>
    <script>
        /** 循环移动数组 => ab转换为ba => (a逆置b逆置)逆置 = ba @arr 移动的数组 @count 移动多少位 正数表示左移,负数表示右移 */ const recycMoveArray = function(arr,count){ let end = arr.length - 1; //获取数组的结束下标
            /* //左移 reverse(0, count-1); //a逆置 reverse(count, end); //b逆置 reverse(0, end); //总体逆置 //右移 reverse(0, end + count); //实际上能够转成左移状况 reverse(end + count + 1, end); reverse(0, end); */
            /* let leftArrEnd = 0; //a数组的结束下标 //判断左移仍是右移 if(count > 0){ leftArrEnd = count - 1; }else{ leftArrEnd = end + count; } */ let leftArrEnd = count > 0 ? --count : end + count; reverse(arr,0,leftArrEnd); reverse(arr,leftArrEnd+1,end); reverse(arr,0,end); } /** 将数组逆置的函数 @param arr 逆置的数组 @param start 逆置数组的开始下标 @param end 逆置数组的结束下标 */ const reverse = function(arr,start,end){ //若是指针不等
            while(start <= end){ //start != end是有缺陷的,当是偶数个时不能跳出
                //调换start和end指向的值
 let temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; //指针移动
 start++; end--; } } let arr = new Array("a","b","c","d","e","f","g","h"); recycMoveArray(arr,3); document.write(arr); //defghabc
    </script>
</body>

</html>
相关文章
相关标签/搜索