では、JavaScript のfind() / findIndex() / some() / every()
の理解を深めるために、レベル別(初級・中級・上級)で問題+解答+解説を用意しました。
初心者でもステップアップしながら自然に覚えられる構成です。
初級編(基礎理解)
Q1. 次のコードの出力は?
const numbers = [5, 8, 12, 4];
const result = numbers.find(num => num > 10);
console.log(result);
JavaScript答え: 12
解説:find は条件を満たす 最初の要素の値 を返す。
10より大きい最初の数は 12 だから、結果は 12。
Q2. findIndex() の結果は?
const numbers = [5, 8, 12, 4];
const index = numbers.findIndex(num => num > 10);
console.log(index);
JavaScript答え: 2
解説:12 は配列の3番目の要素。配列は 0 から数えるので、インデックスは 2。
見つからなければ -1。
Q3. some() の結果は?
const ages = [15, 17, 19];
console.log(ages.some(age => age >= 18));
JavaScript答え: true
解説:
「18歳以上が1人でもいるか?」 → 19 がいるので true。some は 1 つでも条件に合えば true。
Q4. every() の結果は?
const ages = [15, 17, 19];
console.log(ages.every(age => age >= 18));
JavaScript答え: false
解説:
「全員が18歳以上か?」 → 15 と 17 がいるため false。every は1人でも条件を満たさないと false。
中級編(少し実践的)
Q5. 次のコードの出力は?
const items = ["apple", "banana", "melon"];
const found = items.find(fruit => fruit.includes("na"));
console.log(found);
JavaScript答え: "banana"
解説:"na" を含む最初の要素は "banana"。includes() を条件に組み合わせて使うのがポイント。
Q6. 条件に合う要素がない場合
const numbers = [1, 3, 5];
const result = numbers.find(num => num % 2 === 0);
console.log(result);
JavaScript答え: undefined
解説:
偶数がないため、find は見つからず undefined を返す。
※ findIndex の場合は -1。
Q7. some() と every() の違いを確認
const scores = [80, 90, 50];
console.log(scores.some(s => s >= 80)); // ?
console.log(scores.every(s => s >= 80)); // ?
JavaScript答え:
some:trueevery:false
解説:
some→ 80以上が1人でもいる(2人いる)→trueevery→ 全員80以上ではない(50がある)→false
Q8. findIndex() の実用例
const users = [
{ id: 1, name: "Aki" },
{ id: 2, name: "Bota" },
{ id: 3, name: "Coco" }
];
const index = users.findIndex(u => u.id === 2);
console.log(index);
JavaScript答え: 1
解説:id が 2 のユーザーは2番目の要素 → インデックス 1。
上級編(応用・発展)
Q9. find() と filter() の違いを確認!
const nums = [2, 4, 6, 8];
console.log(nums.find(n => n > 4)); // ?
console.log(nums.filter(n => n > 4)); // ?
JavaScript答え:
find:6filter:[6, 8]
解説:
find→ 最初の1つだけfilter→ 条件を満たすすべての要素を配列で返す
Q10. オブジェクト配列の中から「未完了のタスク」を探す
const tasks = [
{ id: 1, title: "買い物", done: true },
{ id: 2, title: "掃除", done: false },
{ id: 3, title: "勉強", done: false }
];
const firstIncomplete = tasks.find(task => !task.done);
console.log(firstIncomplete.title);
JavaScript答え: "掃除"
解説:done: false の最初の要素を探す。
「未完了(false)」を条件にするために !task.done を使っている。
Q11. 「全員合格しているか」を調べる
const students = [
{ name: "Ken", score: 75 },
{ name: "Aya", score: 60 },
{ name: "Leo", score: 48 }
];
const allPassed = students.every(s => s.score >= 50);
console.log(allPassed);
JavaScript答え: false
解説:Leo の点数が50未満なので全員合格ではない。
1人でも条件を満たさないと false。
Q12. 「60点以上の人がいるか」を調べる
const students = [
{ name: "Ken", score: 75 },
{ name: "Aya", score: 60 },
{ name: "Leo", score: 48 }
];
const hasGoodScore = students.some(s => s.score >= 60);
console.log(hasGoodScore);
JavaScript答え: true
解説:Ken と Aya が条件を満たす → some は1人でもOKなので true。
Q13. 条件を満たす位置を取得し、要素を更新
let products = [
{ id: 1, name: "りんご", stock: 10 },
{ id: 2, name: "バナナ", stock: 0 },
{ id: 3, name: "みかん", stock: 5 }
];
const idx = products.findIndex(p => p.stock === 0);
if (idx !== -1) {
products[idx].stock = 20;
}
console.log(products);
JavaScript答え:
[
{ id: 1, name: "りんご", stock: 10 },
{ id: 2, name: "バナナ", stock: 20 },
{ id: 3, name: "みかん", stock: 5 }
]
解説:
在庫が 0 の商品(バナナ)を探して、findIndex で位置を取得。
見つかったら在庫数を 20 に更新。findIndex は実務でこうした「更新・削除」に便利。
まとめ表(4つの違い)
| メソッド | 返り値 | 条件に合う個数 | 見つからなければ | よく使う用途 |
|---|---|---|---|---|
find() | 要素の値 | 最初の1つ | undefined | 1件だけ取得 |
findIndex() | インデックス番号 | 最初の1つ | -1 | 位置を特定 |
some() | true / false | 1つでもあればOK | false | 存在チェック |
every() | true / false | 全て一致でOK | false | 全件チェック |
