JavaScriptで文字列をNATOフォネティックアルファベットに変換する方法
問題
JavaScriptで、入力された文字列を受け取り、それをNATOフォネティックアルファベット(国際的な音声通信に用いられる呼称)へと変換する関数を作成する必要があります。
NATOフォネティックアルファベットは、無線通信などで文字の聞き間違いを防ぐために使われる26個のコードワードで構成されています。対応表は以下の通りです。
- A: Alfa
- B: Bravo
- C: Charlie
- D: Delta
- E: Echo
- F: Foxtrot
- G: Golf
- H: Hotel
- I: India
- J: Juliett
- K: Kilo
- L: Lima
- M: Mike
- N: November
- O: Oscar
- P: Papa
- Q: Quebec
- R: Romeo
- S: Sierra
- T: Tango
- U: Uniform
- V: Victor
- W: Whiskey
- X: X-ray
- Y: Yankee
- Z: Zulu
実装の考え方
この変換処理は以下の手順で行います。
- 各英字とNATOコードワードの対応をオブジェクトとして定義します。
- 入力文字列を1文字ずつ配列に展開します。
- 空白文字は除外し、残りの文字を順番に処理します。
- 各文字が英小文字(a〜z)かどうかを正規表現で判定します。英字以外(数字や記号など)の場合は元の文字をそのまま返します。
- 英字の場合は対応するNATOコードワードに置き換えます。
- 最後にすべての要素をスペース区切りで結合して出力します。
コード例
以下がその実装コードです。
const str = 'this is simple string';
const convertToNato = (str = '') => {
let nato = {
a: 'Alfa',
b: 'Bravo',
c: 'Charlie',
d: 'Delta',
e: 'Echo',
f: 'Foxtrot',
g: 'Golf',
h: 'Hotel',
i: 'India',
j: 'Juliett',
k: 'Kilo',
l: 'Lima',
m: 'Mike',
n: 'November',
o: 'Oscar',
p: 'Papa',
q: 'Quebec',
r: 'Romeo',
s: 'Sierra',
t: 'Tango',
u: 'Uniform',
v: 'Victor',
w: 'Whiskey',
x: 'Xray',
y: 'Yankee',
z: 'Zulu'
}
let arr = [...str];
return arr
.filter((letter) => letter !== " ")
.map((letter) => {
if( /[^a-z]/.test(letter.toLowerCase()) ) { return letter }
else { return nato[letter.toLowerCase()]; }
}).join(' ');
};
console.log(convertToNato(str));コードのポイント
- スプレッド構文 [...str]: 文字列を簡単に1文字ずつの配列に変換できます。
- filter(): 空白スペースを除外することで、単語の区切りが詰まった形の出力になります。
- map()内の正規表現チェック:
/[^a-z]/.test(letter.toLowerCase())により、小文字化した文字が英字以外なら元の文字を保持します。これにより数字や記号も壊れずに出力されます。
出力結果
上記のコードをコンソールで実行すると、次のような出力が得られます。
Tango Hotel India Sierra India Sierra Sierra India Mike Papa Lima Echo Sierra Tango Romeo India November Golf
「this is simple string」の各文字が、それぞれ対応するNATOコードワードへと正しく変換されていることが確認できます。
-
JavaScriptで文字列を真偽値(Boolean)に変換する方法
JavaScriptでは、文字列が「true」というリテラルと一致するかどうかを比較演算子で判定することで、文字列を実質的に真偽値(Boolean)として扱うことができます。ここでは、==(緩い等価比較)と===(厳密等価比較)の2つの方法を使った具体例を紹介します。 サンプルコード <!DOCTYPE html> <html> <head> <style> body { font-family: &
-
JavaScriptで配列をSet(セット)に変換する方法
JavaScriptで配列をSetに変換するときの基本JavaScriptでは、Setオブジェクトを使うことで、配列から重複しない一意の値だけを持つコレクションを簡単に作成できます。SetはES6(ECMAScript 2015)で導入された組み込みオブジェクトで、同じ値が複数回追加されても自動的に1つにまとめられるのが特徴です。変換自体は非常にシンプルで、new Set(配列)と書くだけで完了します。コード例:配列からSetへの変換以下は、重複を含む配列をSetに変換して画面に表示するサンプルコードです。<!DOCTYPE html> <html lang=ja> &