HYUDORO

勉強したことや日記など

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で配列をコピーして非破壊的に行うこと。

参考はこちら

stackoverflow.com