【JavaScript】map()メソッドでオブジェクトの配列に共通項目のプロパティを追加する方法
オブジェクトの配列内の各要素に新しいプロパティを追加したい場合、map()メソッドを使うのが最もシンプルで効果的な方法です。この記事では、名前の配列と照合しながら、学生データのオブジェクト配列に「存在確認」のプロパティを追加する具体例を紹介します。
サンプルデータの準備
まず、比較元となる名前の配列を用意します。
const firstname = ['John', 'David', 'Bob'];
続いて、プロパティを追加していく対象となるオブジェクトの配列です。
const studentDetails = [
{
firstname: 'Carol',
marks: 78
},
{
firstname: 'Mike',
marks: 89
},
{
firstname: 'Bob',
marks: 86
}
];
コード例:map()とSet()を組み合わせた実装
以下のコードでは、Setオブジェクトを使って名前の配列を高速に検索できるようにし、map()で各オブジェクトを走査しています。firstnameがSet内に存在すればisPresentに「存在する」旨の文字列を、存在しなければ「存在しない」旨の文字列を設定します。
const firstname = ['John', 'David', 'Bob'];
const studentDetails = [
{
firstname: 'Carol',
marks: 78
},
{
firstname: 'Mike',
marks: 89
},
{
firstname: 'Bob',
marks: 86
}
];
const data = new Set(firstname);
const result = studentDetails.map(tmpObject => {
if (data.has(tmpObject.firstname)) tmpObject.isPresent = "This is present";
else
tmpObject.isPresent = "This is not present";
return tmpObject;
});
console.log(result);
プログラムの実行方法
上記のプログラムを実行するには、Node.js環境で以下のコマンドを使用します。
node fileName.js
ここでは、ファイル名をdemo219.jsとして保存しているものとします。
出力結果
実行すると、コンソールには次のように出力されます。各オブジェクトにisPresentプロパティが追加され、名前が配列に含まれているかどうかが反映されているのが分かります。
PS C:\Users\Amit\JavaScript-code> node demo219.js
[
{ firstname: 'Carol', marks: 78, isPresent: 'This is not present' },
{ firstname: 'Mike', marks: 89, isPresent: 'This is not present' },
{ firstname: 'Bob', marks: 86, isPresent: 'This is present' }
]
ポイント解説
map()は元の配列を変更せずに新しい配列を返すため、安全にデータを加工できます。また、配列のincludes()ではなくSet.has()を使うことで、大規模なデータでも高速な存在チェック(O(1)の計算量)が可能になります。このパターンは、フラグ付けやデータのマージなど、さまざまな場面で応用できるテクニックです。
-
JavaScriptの配列lengthプロパティとは?使い方とサンプルコードを解説
JavaScriptのlengthプロパティは、配列に格納されている要素の総数(配列の長さ)を取得したり、設定したりできる便利なプロパティです。配列操作において最もよく使われるプロパティの一つであり、ループ処理や条件分岐など、さまざまな場面で活用されます。 lengthプロパティの基本 lengthプロパティは、以下のような特徴を持っています。 配列内の要素数を数値として返す 値を代入することで配列の長さを変更できる(短くすると要素が削除される) インデックスは0から始まるため、最後の要素のインデックスは「length - 1」になる サンプルコード 以下は、lengthプロパティを使って
-
JavaScriptのlengthプロパティで配列オブジェクトの長さを取得する方法
JavaScriptにおけるlengthプロパティとはJavaScriptのlengthプロパティは、文字列や配列などのオブジェクトが持つ要素数(サイズ)を返すために使用されます。配列の場合は格納されている要素の個数、文字列の場合は文字数を取得できます。ここでは、文字列と配列オブジェクトの長さをlengthプロパティで取得するサンプルコードを紹介します。サンプルコード以下の例では、ボタンをクリックすると配列の長さが画面に表示される仕組みを実装しています。<!DOCTYPE html> <html lang="ja"> <head> <