初めに
配列内にある、オブジェクト(連想配列)の中から、「指定の値が入っているオブジェクトのみ」を取得したい。
今回は、name:
がBob
のオブジェクトを取得してみます。
const users = [
{ id: '101', name: 'Alice' },
{ id: '102', name: 'Bob' },
{ id: '103', name: 'Charlie' },
];
findメソッドを使う
下記コード、nameの値が、Bobのオブジェクトを取得
//対象の配列.find((引数) => 引数.key名 === 検索したい値)
const targetUser = users.find((v) => v.name === 'Bob');
console.log(targetUser);
//出力結果 { id: '102', name: 'Bob' }
今回は、name
で検索していますが、もちろんid:
や他のkeyでも検索できます!
[おまけ] 指定のデータの有無 を確認
指定のデータの有無を確認し、「存在した場合」と「存在しなかった場合」に処理を分ける方法です。
const users = [
{id: 1, name: "田中"},
{id: 1, name: "鈴木"},
{id: 1, name: "山田"}
];
const result = users.some((u) => u.name === "田中");
if (result) {
//データが存在した場合の処理
console.log("あった");
} else {
// データが存在しなかった時の処理
console.log("無かった");
}
終わりに
同じ値が複数あった場合等は、今回完全に無視しています。手っ取り早くということで。。。
その場合の代替としてfilter()
を使う方法があるらしい。