JavaScriptで2つの文字列の相違点(不一致文字数)をカウントする方法
はじめに
本記事では、2つの文字列を受け取り、対応する位置の文字が異なる箇所の数を求めるJavaScript関数を作成します。対応する文字同士が一致していない場合、その箇所を「相違点」としてカウントする仕組みです。
比較対象となる文字列の例
今回は、以下の2つの文字列を比較してみます。
const str1 = 'Hello world!!!'; const str2 = 'Hellp world111';
一見よく似ていますが、よく見ると5文字目が「o」と「p」で異なり、さらに末尾の3文字も「!!!」と「111」で異なっています。つまり、相違点は合計4箇所あることになります。
サンプルコード
実際のコードは以下のとおりです。
const str1 = 'Hello world!!!';
const str2 = 'Hellp world111';
const dissimilarity = (str1 = '', str2 = '') => {
let count = 0;
for(let i = 0; i < str1.length; i++){
if(str1[i] === str2[i]){
continue;
};
count++;
};
return count;
};
console.log(dissimilarity(str1, str2));
コードの解説
この関数の処理の流れは以下のとおりです。
- カウンター用の変数
countを0で初期化します。 forループでstr1の各文字を先頭から順番に走査します。- 各位置で
str1[i]とstr2[i]を比較し、一致していればcontinueで次の繰り返しへスキップします。 - 一致しなかった場合のみ
countをインクリメントします。 - ループが完了したら、相違点の総数である
countを返り値として返します。
注意点
この実装は str1.length を基準にループしているため、str2 の方が長い場合、はみ出した部分はカウントされません。より堅牢にしたい場合は、Math.max(str1.length, str2.length) までループ範囲を広げるのがおすすめです。
出力結果
コンソールには次のように表示されます。
4
-
JavaScriptで[1,2]+[3,4]が「1,23,4」になる理由を解説
JavaScriptの+演算子は、数値同士の加算、または文字列同士の連結に使用されます。しかし、配列を結合して新しい配列を作りたい場合には、concat()メソッドを使う必要があります。 配列の結合にはconcat()メソッドを使う 例えば、次のように2つの配列を結合できます。 [50, 70].concat([90, 100]) 上記のコードを実行すると、以下のような結果が出力されます。 [50, 70, 90, 100] [1,2]+[3,4]が「1,23,4」になる仕組み では、なぜ[1,2] + [3,4]が「1,23,4」という文字列になってしまうのでしょうか。その理由は、+演算子は
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>