March 04, 2020
JavaScriptで配列の中から何かを探したい時のメソッドまとめ
配列の中から条件に合う要素を探したい時のメソッドまとめ。find(), filter(), findIndex(), some()
Updated at November 06, 2020
配列の中から特定の要素を持つオブジェクトを探す時のメソッドまとめ。
※サンプルコードは全て ES2015 のアロー関数(Arrow Function)を使っています。
find() 条件に合う最初のオブジェクトを 1 つ探す時
条件に合う 最初のオブジェクトが 1 つ だけ返る。
無ければ undefined
が返る。
const users = [
{ name: "Emma", age: 20 },
{ name: "Jake", age: 30 },
{ name: "Lily", age: 40 },
{ name: "Harry", age: 20 },
]
const targetUser = users.find(friend => friend.age === 20)
console.log(targetUser)
結果:
console.log
{ name: 'Emma', age: 20 }
Emma だけが返る、Harry は返らない。
filter() 条件に合うオブジェクト全てを探す時
条件に合うオブジェクト 全て が配列で返る。
見つからなかったら空の配列。
const users = [
{ name: "Emma", age: 20 },
{ name: "Jake", age: 30 },
{ name: "Lily", age: 40 },
{ name: "Harry", age: 20 },
]
const targetUser = users.filter(friend => friend.age === 20)
console.log(targetUser)
結果:
console.log
[{ name: "Emma", age: 20 }, { name: "Harry", age: 20 }]
Emma も Olivia も返る。
findIndex() 条件に合うオブジェクトのインデックスを知りたい時
条件に合う 最初のオブジェクトのインデックス だけが返る。
見つからなかったら -1
が返る。
const users = [
{ name: "Emma", age: 20 },
{ name: "Jake", age: 30 },
{ name: "Lily", age: 40 },
{ name: "Harry", age: 20 },
]
const index = users.findIndex(friend => friend.age === age)
console.log(index)
結果:
console.log
0
Emma の index 0 だけが返る。Harry の index は返らない。
some() 条件に合うオブジェクトがあるかないかだけ知りたい時
条件に合うオブジェクトが 1 つでもあれば true
、無ければ false
が返る。
const users = [
{ name: "Emma", age: 20 },
{ name: "Jake", age: 30 },
{ name: "Lily", age: 40 },
{ name: "Harry", age: 20 },
]
const existing = users.some(friend => friend.age === 20)
console.log(existing)
結果:
console.log
true