【javascript】filterで返ってきた空の配列を判定値として正しく使う

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>
&nbsp;

ちなみに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の返り値が空の場合にごにょごにょと処理を書くことができるようになりました。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG