浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【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></pre>
&nbsp;

ちなみにif(result === null)やif(result === '')やif(result.length < 0)もダメ。

最適解はif(result.length)。配列は普通の変数と長さが異なるので、中身を調べる時も

配列の持っている長さがいくつかわかるように指定しないと正しい真偽値を返してくれない仕様

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

  • この記事いいね! (0)