JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで2つの文字列のASCIIコード合計の差分を計算する方法

ASCIIコードとは

ASCII(アスキー)は7ビットの文字コード体系で、各ビットパターンがそれぞれ一意の文字に対応しています。英字アルファベットのすべての文字には、固有の10進数のASCIIコードが割り当てられています。

今回は、2つの文字列を受け取り、それぞれのASCIIスコア(文字列内の各文字のASCIIコード10進数値の合計)を計算し、その差を返す関数を作成します。

実装の考え方

処理の流れは以下の通りです。

  • split("")で文字列を1文字ずつ配列に分解する
  • reduce()を使って各文字のcharCodeAt(0)(ASCIIコード)を合計する
  • 2つの文字列のスコアの差をMath.abs()で絶対値として返す

それでは、実際のコードを見てみましょう。

コード例

const str1 = 'This is an example sting';
const str2 = 'This is the second string';

// 文字列のASCIIスコア(各文字のASCIIコードの合計)を計算する関数
const calculateScore = (str = '') => {
    return str.split("").reduce((acc, val) => {
    return acc + val.charCodeAt(0);
    }, 0);
};

// 2つの文字列のASCIIスコアの差分を返す関数
const ASCIIDifference = (str1, str2) => {
    const firstScore = calculateScore(str1);
    const secondScore = calculateScore(str2);
    return Math.abs(firstScore - secondScore);
};

console.log(ASCIIDifference(str1, str2));

出力結果

コンソールには以下のように出力されます。

116

解説

このコードでは、まずcalculateScore関数がcharCodeAt(0)メソッドを使用して各文字のASCIIコード(10進数)を取得し、reduce()でそれらをすべて加算しています。初期値として0を渡しているため、空文字列に対しても安全に動作します。

次に、ASCIIDifference関数が両方の文字列のスコアを計算し、Math.abs()によって差分を正の値(絶対値)として返します。これにより、引数の順序に関係なく常に同じ結果が得られます。

  1. JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説

    JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>

  2. JavaScriptで2つの直方体の体積差を求める方法

    問題JavaScriptで、2つの直方体(キューボイド)の長さ・幅・高さを指定する配列を受け取る関数を作成します。この関数は、それぞれの直方体の体積を計算し、その絶対差(差の絶対値)を返す必要があります。直方体の体積は「長さ × 幅 × 高さ」で求められるため、まず各直方体の体積を算出し、Math.abs()メソッドを使って2つの体積の差の絶対値を取得します。コード例以下が実際のコードです。const h1 = 10; const w1 = 12; const l1 = 15; const h2 = 12; const w2 = 15; const l2 = 9; const findVol