findまたはfilterを使って配列の一番最後に該当する要素だけを取得する
配列の中から.find()
や.filter()
を使って条件に該当する要素を見つけるが、
find
の場合は条件に該当した最初の要素を返し、filter
の場合は複数の要素が帰ってくる場合がある。
条件に該当する配列の最後の要素だけ取得したい場合は、下記のように.reverse()
を使って、
配列の要素を最後から調べていくとよい。
const users = [ {id: 1, name: "taro"}, {id: 2, name: "taro"}, {id: 3, name: "taro"} ]; let result; result = users.slice().reverse().find(elem => { return elem.name === "taro"; }); console.log(result); result = users.slice().reverse().filter(elem => { return elem.name === "taro"; }); console.log(result[0]);
どちらも{id: 3, name: "taro"}
を返す。
ポイントはslice
で配列をコピーして非破壊的に行うこと。
参考はこちら