JavaScriptで文字列を反転する


文字列を反転するのは、JavaScriptの中で最も一般的で必要な操作の一つです.どんなソフトウェア開発者の経歴の旅の間に、インタビューのための非常に重要で基本的な質問は「JavaScriptのストリングを逆にする方法です」
JavaScriptの文字列を反転する方法はいくつかあります.ループ、組み込み関数、再帰、および正規表現でも問題を解決できます.このポストでは、これらのアプローチを例に示します.では、始めましょう!

🔶組み込みメソッド: split ()reverse ()join ()
私が議論したい最初の方法は、おそらく最も一般的に使われている方法です.まず最初に、文字列を単一の文字の配列に分割する必要があります.
まず例を見ましょう.

この例では、基本的に3つの組み込み方法が使用されている.以下のようになります:String.prototype.split() , Array.prototype.reverse() & Array.prototype.join() . 正しく理解するために、私はそれを精巧に説明しています.
🔸 String.prototype.split() メソッドは、文字列を文字列の配列に分割します.この場合、StringToreverse.split ("")は以下のように出力を返します.['S', 'o', 'f', 't', 'w','a', 'r', 'e', ' ', 'D', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'r']🔸 文字列の配列としてArray.prototype.reverse() 単一の配列要素を代わりに反転する主な作業を行います.最初の配列要素は、最後の配列要素とその逆です.
この場合、splitstring.reverse ()は以下のように出力します.['r', 'e', 'p', 'o', 'l', 'e', 'v', 'e', 'D', ' ', 'e', 'r', 'a', 'w', 't', 'f', 'o', 'S']🔸 The Array.prototype.join() 最後にsplit ()メソッドによって分離された全ての単一の文字を最終的に補完し、逆の文字列を再構成します.この例では、最終出力は以下の通りです.repoleveD erawtfoS
これらのメソッドの連鎖
さて、これらの3つの方法は、私たちのコードをコンパクトできれいにして、以下の方法で出力することができます、そして、出力は同じです.

ただし、String.prototype.split() , 私たちはこの仕事をSpread Operator [...] また、ES 6構文です.それは以前と同じように動作します.

したがって、スプレッド演算子はsplit ()と同じ働きをします.文字列オブジェクトを単一の文字に分割します.

🔶ループの縮小を使用する
これはJavaScriptの文字列を反転する簡単で最古のアプローチですが、非常によくどこでも動作します.

🔸 最初に、newStringは新しい作成されたストリングをホストするために空のストリングをつくりました.
🔸 ループの開始点は、文字列の最後の文字“r”に対応する(str . length - 1)となります.私がゼロ以上である限り、ループは続くでしょう.私たちは、各反復の後、私を非難しています.
🔸 関数は逆の文字列を返す.
また、for loop JavaScript ES 6によって導入された構文は、非常に使いやすく、ループの条件を書いている間、間違いの可能性を減らします.

以前のループよりずっときれいですね.しかし、本当に素晴らしい作品!
🔸 forループ状態の“C”は文字列の文字を1文字として取ります.より良い理解のために私は2つのコンソールを追加しました.次の画像のlog ()ステートメントと、端末の出力を見ることもできます.


🔶再帰的アプローチ:再帰法
再帰メソッドを使用すると、JavaScriptの文字列を逆にする別の非常によく知られたアプローチです.この再帰的アプローチを行うには2つの方法が必要である.一つはString.prototype.substr() 方法と他はString.prototype.charAt() メソッド.
例を見ましょう.

🔸 文字列.プロトタイプ.文字列の一部を返します.
我々の例では、部分str.substr(1) "ecursion "を返します.
🔸 String.prototype.charAt() メソッドは文字列から指定した文字を返します.
我々の例では、部分str.charAt(0) "r "を返します.
🔸 reverseString(str.substr(1)) + str.charAt(0) 最初に、文字列の部分を返します.最初の文字のインデックスから始まる部分文字列を返します.メソッドの2番目の部分はif条件を打ちます、そして、最も高く入れ子にされた呼び出しはすぐに戻ります.
私たちは、このメソッドが1つの呼び出しを持っていないが、いくつかの入れ子になった呼び出しを持っていないのを覚えておく必要があります.
それにもかかわらず、このアプローチは、文字列の長さに等しい再帰の深さとして文字列を反転するための最良のアプローチではありません.非常に長い文字列の場合、他のメソッドよりも多くの時間がかかり、スタックのサイズがここで重要な問題です.

🔶 arrayの使用.プロトタイプ.reduce ()メソッド
The Array.prototype.reduce() メソッドは、配列の各要素に対して還元コールバック関数を実行し、前の要素の計算から戻り値を渡し、最後の結果として1つの値を返します.構文は次のように書くことができます.reduce((previousValue, currentValue) => { ... } )この例を見てみましょう.
function reverseString(str) {
  const arr = str.split("");
  const stringReversed = arr.reduce((reversed, character) => {
    return character + reversed;
  }, "");
  return stringReversed;
}

console.log(reverseString("Swarnali")); //ilanrawS
🔸 reverseString関数は文字列strをパラメータとして受け取ります.
🔸 まず最初に必要なのは、文字列を単一の文字に分割することです.値を保持するために配列arrを取った.
🔸 reduce ()関数は2つのパラメータをとり、反転して文字をとります.reduce ()の基本的な構文と比較すれば、逆は前の値/アキュムレータであり、文字は現在の値です.関数StringReversedは、現在の値を前の値で追加します.これは実際には、配列文字全体を反転して、逆の方法で一緒に結合します.
JavaScript ES 6構文を使用する場合、このコードブロックをよりコンパクトにすることができます.👇

const reverseString = (str) => {
  return str.split("").reduce((reversed, character) => character + reversed, "");
};

console.log(reverseString("Roy is a Developer"));
//repoleveD a si yoR
1行コードにする
const reverseString = (str) => str.split("").reduce((reversed, character) => character + reversed, "");

console.log(reverseString("Roy is a developer"));
//repoleveD a si yoR

🔶正規表現( regex )の使用
これは、文字列を反転するための最も静かでトリッキーなアプローチの一つですが、JavaScriptの正規表現で遊ぶのが大好きな開発者は間違いなくこのアプローチを試すことができます.また、どんなインタビューにおいても、これを示すことができれば、それは人々が一般的に使用しない、そして、彼らがあなたが正規表現であるもう一つの技術を習得したというそのようなアプローチであるので、それはプラスポイントであるかもしれません!
以下はこのアプローチの例です.
let str = "My name is Swarnali Roy";
let regex = /.{1,1}/ig

let result = str.match(regex);
let reveresed = result.reverse().join("");

console.log(reveresed); //yoR ilanrawS si eman yM
🔸regexの中で最も単純な量指定子は巻き括弧の数です.文字(あるいは文字クラス)あるいは[ [] ]には、指定子が追加されますを設定し、必要な数を指定します.
私たちの例では、{ 1 , 1 }はマッチする1文字を正確に必要とします.コンソールを書くならば.log (結果)['M', 'y', ' ', 'n', 'a','m', 'e', ' ', 'i', 's', ' ', 'S', 'w', 'a', 'r', 'n', 'a', 'l', 'i', ' ','R', 'o', 'y']🔸 ここで正規表現は、主に文字列オブジェクトを配列の単一の文字に分離する作業を行います.reverse ()およびjoin ()メソッドを分離した後は、split() or spread operator 上記のように、組み込みのアプローチで示しました.

読者は、チュートリアルを理解し、それはあなたのインタビューのお手伝いをすることができます願っています.クエリは常にディスカッションセクションで歓迎されます.