魔法の回転機能
Feb 15, 2017 pm 02:21 PM魔法の rotate または配列反転関数を紹介したいと思います。まず例を見てみましょう:
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) を例にとります。これは、最初から最後までの要素が 1 つ右に移動されるのと同じです。半月の弧を描いて先頭に立つ。
そして rotate(data,2) は rotate(data,1) に基づいて同じ操作を実行します。
rotate(data,3)Based on rotate(data,2)...
これはまだ終わっていません。rotate関数にはより強力な関数があり、負の数を渡してみてください。何が起こるか?
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回反転しますが、何もしないだけではありませんか?^_^
この関数はほぼ全能です:
数値配列を使用でき、他のオブジェクト配列も反転できます。
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]
さて、たくさんの魔法の機能を見た後、それを実装する方法を考えてみましょう。
基本的な状況は正の数、負の数、ゼロの 3 つがあるので、1 つずつ倒しましょう。
正の数の場合は、この関数を具体的に書くだけです:
if(typeof Array.prototype.shiftRight !== "function"){ Array.prototype.shiftRight = function(n){ while(n--){ this.unshift(this.pop()); } }; }
次に、負の数の場合、この関数と反対の関数に依存します:
if(typeof Array.prototype.shiftLeft !== "function"){ Array.prototype.shiftLeft = function(n){ while(n--){ this.push(this.shift()); } }; }
最後に、を統合するだけで済みます。回転関数 出力:
function rotate(array,n){ //copy array array = array.slice(0); if(n > 0){ array.shiftRight(n); } else if(n < 0){ array.shiftLeft(-n); } return array; }
上記は魔法の回転関数の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築

JavaScript で HTTP ステータス コードを簡単に取得する方法
