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

JavaScriptで特定のプロパティに基づいて配列の内容を検索する方法

JavaScriptである配列の各要素を、別の配列の特定のプロパティ値に基づいて検索し、該当する要素と置き換えたい場合は、map()find()を組み合わせると簡単に実現できます。

例として、「氏名(FirstName)」「出席番号(RollNo)」「科目(Subject)」という情報を持つ学生レコードが、2つの配列に分かれて保存されているケースを考えてみましょう。1つ目の配列の各要素について、2つ目の配列から同じRollNoを持つレコードを検索し、見つかった場合にはそのレコードで置き換える処理を作成します。

サンプルコード

var firstObject = [
    { "FirstName": "David", "RollNo": "105", "Subject": "MongoDB" },
    { "FirstName": "Mike", "RollNo": "110", "Subject": "JavaScript" }
];
var secondObject = [
    { "FirstName": "Bob", "RollNo": "101", "Subject": "Java" },
    { "FirstName": "John", "RollNo": "110", "Subject": "MySQL" }
];
var output =
firstObject.map(first =>
(secondObject.find(second => second.RollNo == first.RollNo) || first));
console.log(output);

コードの解説

このコードの仕組みは以下のとおりです。

1. map():1つ目の配列(firstObject)の各要素に対して、順番に処理を実行します。

2. find():2つ目の配列(secondObject)の中から、RollNoが一致する最初の要素を1件だけ取り出します。

3. ||演算子によるフォールバックfind()は一致する要素が存在しない場合にundefinedを返します。そこで|| firstを加えることで、一致する要素が見つからなかったときは元のオブジェクト(first)をそのまま返すようにしています。

なお、ここでは比較に等価演算子==を使用していますが、型まで厳密に比較したい場合は厳密等価演算子===を使うとより安全です。

プログラムの実行方法

上記のプログラムを実行するには、Node.js環境で次のコマンドを使用します。

node fileName.js

ここでは、ファイル名を「demo33.js」として保存したものとします。

実行結果

上記のプログラムを実行すると、コンソールには次のように出力されます。

PS C:\Users\Amit\JavaScript-code> node demo33.js
[
    { FirstName: 'David', RollNo: '105', Subject: 'MongoDB' },
    { FirstName: 'John', RollNo: '110', Subject: 'MySQL' }
]

結果を見ると、1つ目の配列のうちRollNoが「110」のMikeのレコードが、2つ目の配列にある同じRollNoのJohnのレコード(MySQL)に置き換わっていることが確認できます。RollNo「105」のDavidについては、一致する要素が2つ目の配列に存在しないため、元のレコードがそのまま保持されています。

  1. JavaScriptでHTMLの内容を変更することはできる?基本と実例をわかりやすく解説

    はい、JavaScriptを使えばHTMLの内容を変更することは十分に可能です。通常、HTMLのコンテンツは<p>や<span>などのタグの中に記述されています。JavaScriptにはHTMLタグへアクセスするためのDOMメソッドが用意されており、document.getElementById()やdocument.getElementsByTagName()などを利用することで、対象のタグを指定して表示内容を書き換えられます。DOMメソッドによるHTML操作の仕組みブラウザは読み込んだHTMLを「DOM(Document Object Model)」と呼ばれるツリー

  2. JavaScriptのlastIndexプロパティの使い方を解説!正規表現のマッチ位置を取得する方法

    JavaScriptのlastIndexプロパティとは JavaScriptのlastIndexプロパティは、正規表現によるマッチが発生したインデックス位置(文字位置)を返すプロパティです。このプロパティを利用すると、次回のマッチ検索はその位置から再開されます。 重要なポイントとして、lastIndexプロパティが機能するのは、正規表現に「g」(グローバル)フラグが設定されている場合のみです。「g」フラグがない場合、lastIndexは常に0のまま変化しません。 lastIndexプロパティの主な特徴 マッチが見つかった位置の次のインデックスを記録します test()メソッドやexec()メ