{}const=>[]async()letfn</>var
開発

findLast ()とfindLastIndex ()は、配列における小さな革命です

新しい配列メソッドが古いreverse()を置き換える理由を実際の例で示します。簡潔に、明確に、そして突然変異なしに。

К

Kodik

著者

1分で読める

JavaScriptは2025年にも驚かせることができます。配列を操作するためのものはすべてそろっているように思えます。mapfilterfindreduce…しかし、最近、新しいメソッドが登場しました。 findLast()findLastIndex()これは単なる化粧品ではなく、まさに小さな革命です。

なぜ新しい方法が必要なのですか?

最近まで、もし私たちが見つける必要があったら 配列の最後の要素、条件を満たすには、回避する必要がありました。

  • 配列を reverse() で反転させ、find() を適用します。

  • または、最後からサイクルを実行します。

欠点は明らかです。

  • reverse()は配列を変異させます。これは危険で明白ではありません。

  • ループは煩雑で、現代のJavaScriptの精神に反します。

🔥 10万人以上の学生が参加中

理論を読むのに疲れた?
コーディングの時間だ!

Kodik — 実践でプログラミングを学ぶアプリ。AIメンター、インタラクティブなレッスン、実際のプロジェクト。

🤖 AI 24時間
🎓 修了証
💰 無料
🚀 始める
今日参加

変更点

今ではすべてが簡単です。

  • findLast()は、条件に一致する最後の要素を検索します。

  • findLastIndex() は、この要素のインデックスを返します。


const users = [
  { name: "Anya", active: false },
  { name: "Boris", active: true },
  { name: "Vika", active: false },
  { name: "Gosha", active: true }
];

console.log(users.findLast(user => user.active));
// { name: "ゴーシャ", active: true }}

console.log(users.findLastIndex(user => user.active));
// 3
    

なぜこれが古いトリックよりも優れているのですか?

  • コードはテキストとして読み取られます — 意図を推測する必要はありません。

  • 安全性 — 配列の変異はありません。

  • 速度 - インタプリタは最後に来て、最初の一致で停止します。

「前/後」:例

課題

以前

現在

最後のアクティブユーザー


const lastActive = users
  .slice()
  .reverse()
  .find(u => u.active);
          

const lastActive = users.findLast(u => u.active);
          

最後のエラーインデックス


const i = logs.length - 1 - logs
  .slice()
  .reverse()
  .findIndex(e => e.level === "error");
          

const i = logs.findLastIndex(e => e.level === "error");
          

最後の偶数要素


let last;
for (let i = arr.length - 1; i >= 0; i--) {
  if (arr[i] % 2 === 0) { last = arr[i]; break; }
}
          

const last = arr.findLast(n => n % 2 === 0);
          

よくある質問

  • 何が返品されますか? findLast() — 要素または undefinedfindLastIndex()はインデックスまたは-1です。

  • 生産性について: 配列を終わりから1回、反転やコピーなしで通過します。

  • TypeScript: シグネチャは find/findIndex と同様で、移行は最小限です。

結論

findLast()findLastIndex() は、reverse() と手動ループを使用したコールバックパターンの実用的な代替です。コードはより短く、より安全で、より明確になります。

🙌 これらの機能や新機能については、私たちの居心地の良い テレグラムチャンネル開発の世界のニュースを共有し、新しいツールを分析し、プログラマーの生活について冗談を言います。ぜひご参加ください。楽しいことがたくさんあります!

🎯先延ばしをやめよう

記事は気に入った?
実践の時間だ!

Kodikでは読むだけでなく、すぐにコードを書く。理論 + 実践 = 本当のスキル。

即座に実践
🧠AIがコードを説明
🏆修了証

登録不要 • カード不要