>웹 프론트엔드 >JS 튜토리얼 >마법의 회전 기능

마법의 회전 기능

黄舟
黄舟원래의
2017-02-15 14:21:113036검색

마법의 회전 또는 배열 뒤집기 기능을 먼저 소개하고 싶습니다. 먼저 예를 살펴보겠습니다.


var data = [1, 2, 3, 4, 5];

rotate(data, 1) // => [5, 1, 2, 3, 4]
rotate(data, 2) // => [4, 5, 1, 2, 3]
rotate(data, 3) // => [3, 4, 5, 1, 2]
rotate(data, 4) // => [2, 3, 4, 5, 1]
rotate(data, 5) // => [1, 2, 3, 4, 5]

알겠습니다. 방법은 없나요? 안 보이셔도 상관없으니 설명드리겠습니다.

첫 번째 rotate(data,1)을 예로 들면, 첫 번째부터 두 번째, 마지막까지의 모든 요소가 한 자리 오른쪽으로 이동한 것과 동일하며, 마지막부터 마지막까지 요소 요소가 반달 호를 그리며 첫 번째 위치에 도달했습니다.

그리고 rotate(data,2)rotate(data,1)을 기반으로 동일한 작업을 수행합니다.

rotate(data,3)rotate(data,2) 기준...

이것도 아직 끝나지 않았습니다 아직 회전 함수에는 더 강력한 기능이 있습니다. 음수를 전달하려고 하면 어떻게 될까요?


rotate(data, -1) // => [2, 3, 4, 5, 1]
rotate(data, -2) // => [3, 4, 5, 1, 2]
rotate(data, -3) // => [4, 5, 1, 2, 3]
rotate(data, -4) // => [5, 1, 2, 3, 4]
rotate(data, -5) // => [1, 2, 3, 4, 5]


주의 깊게 살펴보면 이것이 양수 회전의 반대 과정이라는 것을 곧 알게 될 것입니다.

0이 전달되면 어떤 반응이 나올까요?


rotate(data, 0) // => [1, 2, 3, 4, 5]

0번 뒤집으면 아무 일도 일어나지 않습니까? ^_^

이 기능은 거의 모든 작업을 수행할 수 있습니다.

숫자 배열을 사용할 수 있으며, 다른 객체 배열도 뒤집을 수 있습니다.


아아앙

몇번이든 뒤집어보세요! 수만 번이라도 와도!


아아아아아

자, 마법 같은 기능을 많이 봤으니 어떻게 구현해야 할지 생각해 봅시다.
양수, 음수, 0의 세 가지 기본 상황이 있으므로 하나씩 물리쳐봅시다!

양수의 경우 다음 함수를 구체적으로 작성합니다.


rotate(['a', 'b', 'c'], 1)     // => ['c', 'a', 'b']
rotate([1.0, 2.0, 3.0], 1)     // => [3.0, 1.0, 2.0]
rotate([true, true, false], 1) // => [false, true, true]

그런 다음 음수의 경우 반대 함수와 함께 이 함수를 사용합니다.


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

rotate(data, 7)     // => [4, 5, 1, 2, 3]
rotate(data, 11)    // => [5, 1, 2, 3, 4]
rotate(data, 12478) // => [3, 4, 5, 1, 2]


마지막으로 통합하면 회전 기능이 나옵니다.

if(typeof Array.prototype.shiftRight !== "function"){
    Array.prototype.shiftRight = function(n){
      while(n--){
        this.unshift(this.pop());
      }
    };
}


위 내용은 is Magic 회전 기능의 내용, 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)에 주목하세요!





성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.