JavaScriptで文字列からオブジェクトを生成する方法
文字列からオブジェクトを生成するとは
JavaScriptでは、文字列を引数として受け取り、その文字列に含まれるユニークな文字(重複しない文字)をキーとしたオブジェクトを生成する関数を作成できます。各キーに対応する値は、初期値として 0 を設定します。
例えば、次のような入力があった場合を見てみましょう。
// 入力文字列:
const str = 'hello world!';
// 期待される出力:
const obj = {"h": 0, "e": 0, "l": 0, "o": 0, " ": 0, "w": 0, "r": 0, "d": 0, "!": 0};ポイントは、同じ文字が複数回登場しても、キーとしては1つだけ登録されることです。上記の例では「l」が3回出現していますが、出力には「l」が1つだけ存在します。
実装コード
この関数は、split() メソッドと reduce() メソッドを組み合わせることで、シンプルかつ効率的に実装できます。
コード例
const str = 'hello world!';
const stringToObject = str => {
return str.split("").reduce((acc, val) => {
acc[val] = 0;
return acc;
}, {});
};
console.log(stringToObject(str));
console.log(stringToObject('is it an object'));コードの解説
処理の流れは以下の通りです。
split("") によって文字列を1文字ずつの配列に分解します。その後、reduce() を使って配列の各文字を順番に処理し、空のオブジェクト {} を初期値として、各文字をキーとして値 0 を設定していきます。既に同じキーが存在する場合は、単純に 0 で上書きされるため、結果的にユニークな文字だけがキーとして残ります。
実行結果
コンソールに出力される結果は以下の通りです。
{ h: 0, e: 0, l: 0, o: 0, ' ': 0, w: 0, r: 0, d: 0, '!': 0 }
{ i: 0, s: 0, ' ': 0, t: 0, a: 0, n: 0, o: 0, b: 0, j: 0, e: 0, c: 0 }応用:文字の出現回数をカウントする
この実装を少し変更すると、各文字の出現回数をカウントするオブジェクトも簡単に作れます。
const countCharacters = str => {
return str.split("").reduce((acc, val) => {
acc[val] = (acc[val] || 0) + 1;
return acc;
}, {});
};
console.log(countCharacters('hello world!'));
// { h: 1, e: 1, l: 3, o: 2, ' ': 1, w: 1, r: 1, d: 1, '!': 1 }このように、reduce() を活用したパターンは文字列解析のさまざまな場面で役立ちます。
-
JavaScript関数からオブジェクトを返す方法をわかりやすく解説
JavaScriptの関数からオブジェクトを返すには、return文を使用します。オブジェクト内のプロパティやメソッドにアクセスする際は、thisキーワードを活用すると便利です。この記事では、実際のコード例を使いながら、JavaScript関数からオブジェクトを返す基本的な方法を解説します。基本的な考え方JavaScriptでは、オブジェクトの中にメソッド(関数)を定義できます。そのメソッド内でreturn文を使えば、処理結果や値を呼び出し元に返すことができます。また、thisキーワードを参照することで、同じオブジェクト内の他のプロパティにアクセス可能です。サンプルコード以下のコードでは、従業
-
文字列をJavaScriptオブジェクトに変換する方法【JSON.parse()の使い方】
JavaScriptでJSON形式の文字列をオブジェクトに変換するには、JSON.parse()メソッドを使用します。このメソッドは、引数に渡された文字列を解析(パース)し、対応するJavaScriptオブジェクトを返します。 サンプルコード <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Docum