2023-11-22
javascriptにおいて配列の中身が何もない場合は[]として返ってきますが、この中身をif(result)の形
で判定をするとtrue(配列に中身があるとみなされる)として返ってきてしまいます。
</pre> const words = ['monkey', 'panda', 'crocodile', 'alpaka', 'tiger', 'elephant']; const result = words.filter(word => word.length > 12); if(result){ console.log('値が存在します') } else { //こっちに誘導される console.log('値が存在しません') } <pre>[javascript]</pre> ちなみにif(result === null)やif(result === '')やif(result.length < 0)もダメ。 最適解はif(result.length)。配列は普通の変数と長さが異なるので、中身を調べる時も 配列の持っている長さがいくつかわかるように指定しないと正しい真偽値を返してくれない仕様 のようです。 <pre>[javascript]</pre> const words = ['monkey', 'panda', 'crocodile', 'alpaka', 'tiger', 'elephant']; const result = words.filter(word => word.length > 12); if(result.length){ console.log('値が存在します') } else { //こっちに誘導される console.log('値が存在しません') }
これでfilterの返り値が空の場合にごにょごにょと処理を書くことができるようになりました。