【JavaScript】条件に基づいて辞書(オブジェクト)にキーと値のペアを追加する方法
条件に基づいて辞書(オブジェクト)にキーと値のペアを追加するには、Object.assign() メソッドを使用します。スプレッド構文と組み合わせることで、元のデータを変更せずに、条件に応じた新しいプロパティを各要素へ動的に追加できます。
実装例
以下のコードでは、学生名が join_values 配列に含まれるかどうかを判定し、含まれていれば苗字に「Miller」を、含まれていなければ「Smith」を設定しています。
const details = {
john: {'studentName': 'John'},
david: {'studentName': 'David'},
mike: {'studentName': 'Mike'},
bob: {'studentName': 'Bob'},
carol: {'studentName': 'Carol'}
},
join_values = ['David', 'Carol'],
output = Object.assign(
{},
...Object
.keys(details)
.map(key =>
({[key]: {
...details[key],
lastName: join_values.includes(details[key].studentName) ?
'Miller' : 'Smith'
}})))
console.log(output)
プログラムの実行方法
上記のプログラムを実行するには、Node.js 環境で次のコマンドを使用します。
node fileName.js
実行結果
ここでは、ファイル名を demo157.js として保存しています。実行すると、以下のような出力が得られます。
PS C:\Users\Amit\JavaScript-code> node demo157.js
{
john: { studentName: 'John', lastName: 'Smith' },
david: { studentName: 'David', lastName: 'Miller' },
mike: { studentName: 'Mike', lastName: 'Smith' },
bob: { studentName: 'Bob', lastName: 'Smith' },
carol: { studentName: 'Carol', lastName: 'Miller' }
}
コードのポイント解説
- Object.keys(details):details オブジェクトが持つすべてのキー(john、david など)を配列として取得します。
- map(key => ...):各キーに対して、元の学生情報に lastName プロパティを追加した新しいオブジェクトを生成します。
- includes():学生名が join_values 配列に含まれているかを判定し、三項演算子によって「Miller」か「Smith」を選択します。
- Object.assign({}, ...):スプレッド構文で展開された複数のオブジェクトを1つの空のオブジェクトへ統合します。元の details は変更されないため、イミュータブル(非破壊的)な処理になります。
このように Object.assign() とスプレッド構文を組み合わせれば、if 文による分岐処理を伴うキーと値の追加も、簡潔かつ安全に実装できます。
-
JavaScriptで値に基づいてオブジェクトをグループ化する方法
JavaScriptでは、reduce()メソッドを活用することで、配列内のオブジェクトを特定の値(プロパティ)に基づいて効率的にグループ化できます。たとえば、複数人のデータを「年齢」ごとにまとめたい場合などに役立ちます。ここでは、実際に動作するサンプルコードをもとに、実装手順と仕組みをわかりやすく解説します。 サンプルコード <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewpo
-
JavaScript:ネストされた配列をもとに入れ子の順序なしリスト(ul)を作成するには?
例えば、次のように文字列と配列が混在したネストされた配列があるとします。const arr = [ Value 1, [Inner value 1, Inner value 2, Inner value 3, Inner value 4], Value 2, Value 3, Value 4, Value 5, Value 6 ];このような任意のネストされた配列を受け取り、その構造に合わせてHTMLの順序なしリスト(ul)へ変換するJavaScriptプログラムを作成してみましょう。ここで注意すべきポイントはただ一つ、生成されるulのネスト構造が、元の配列のネスト構造と完全に