はじめに
PHPの empty
関数、便利じゃないですか?私はよく使ってます。
jsでも同じような関数があればいいのですが、連想配列の空判定が色々と面倒みたいで、配列・連想配列・文字列・数値なんかを考慮せずに空かどうか判定したかったので自作してみました。
ちなみに
PHPの empty
関数は次のような挙動です。
"0"
の扱いとは。
php_empty
'' => true
"" => true
0 => true
"0" => true // 注意
0.0 => true
"0.0" => false
null => true
"null" => false
true => false
"true" => false
false => true
"false" => false
[] => true
[[]] => false
コード&動作確認
概要
以下からどうぞ。
なお、PHPでは "0"
が empty
扱いとなりますが、本コードでは not empty
とするようにしています。
判定甘くしてあげればPHPと同じ挙動になるかと。その是非は別にして。
js_empty
'' => true
"" => true
0 => true
"0" => false // 注意:PHPと挙動を変えている
0.0 => true
"0.0" => false
null => true
"null" => false
true => false
"true" => false
false => true
"false" => false
undefined => true
"undefined" => false
[] => true
[[]] => false
{} => true
[{}] => false
使い方
test
関数内の配列に左から [テストしたい値, 画面に表示される文字, 期待値]
で入れてあげればOKです。
挙動チェックついでにアサーションしてくれるすごいやつだ!
コード
See the Pen js-isEmpty by tosite (@tosite) on CodePen.
終わりに
もしもっといいやり方あったら教えてください。