_.find のメモ

2021年12月4日

CDN で読み込む場合は下記の通り。

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.9/lodash.min.js"></script>

リストの中から 5 を取得してみます。

<script>
    let numbers = [1, 2, 5, 6, 7];
    let result = _.find (numbers, (number) => {
        return number === 5;
    });
    console.log(result)
    // 5
</script>

リストの中から存在しない 10 を取得しようとしてみます。

<script>
    let numbers = [1, 2, 5, 6, 7];
    let result = _.find (numbers, (number) => {
        return number === 10;
    });
    console.log(result)
    // undefined
</script>

リストの中から偶数をを取得してみます。
しかし find の場合はリストの前方から一番最初に一致したものを返して終了するようです。

<script>
    let numbers = [1, 2, 5, 6, 7];
    let result = _.find (numbers, (number) => {
        return number % 2 === 0;
    });
    console.log(result)
    // 2
</script>

リストの中から偶数をを取得してみます。
後方から一致したものを指定する場合は下記のように書けるようです。

<script>
    let numbers = [1, 2, 5, 6, 7];
    let result = _.find (numbers.reverse(), (number) => {
        return number % 2 === 0;
    });
    console.log(result)
    // 6
</script>

ですが、reverse を使わなくても findLast と言うのがあります。

<script>
    let numbers = [1, 2, 5, 6, 7];
    let result = _.findLast (numbers, (number) => {
        return number % 2 === 0;
    });
    console.log(result)
    // 6
</script>

リストの中からすべての偶数を取得してみます。

<script>
    let numbers = [1, 2, 5, 6, 7];
    let result = _.filter (numbers, (number) => {
        return number % 2 === 0;
    });
    console.log(result)
    // [2, 6]
</script>

リストの中からキーを指定して辞書を取得してみます。

<script>
    let datas = [
        { name: 'banana', price: 40},
        { name: 'banana', price: 30},
        { name: 'apple', price: 20},
        { name: 'apple', price: 10},
        { name: 'celery', price: 30},
        { name: 'celery', price: 20},
    ]
    let result = _.find(datas, (data) => {
        return data.name = 'banana'
    })
    console.log(result)
    // {name: 'banana', price: 40}
</script>

短縮形で下記のようにもかけるとの事。

<script>
    let datas = [
        { name: 'banana', price: 40},
        { name: 'banana', price: 30},
        { name: 'apple', price: 20},
        { name: 'apple', price: 10},
        { name: 'celery', price: 30},
        { name: 'celery', price: 20},
    ]
    let result = _.find(datas, ['name', 'banana'])
    console.log(result)
    // {name: 'banana', price: 40}
</script>
YouTube

2021年12月4日