1. はじめに
今まで、null判定・undefined判定などの値があるかどうかを判定するロジックに悩むことが多かったので、メモ書きとしてまとめていたもの+調査したものを公開していきます。
今回はJavaScript編です。今でもよく使っているloadash関数を使った方法をまとめました。
2. lodashによる値存在判定
※型定義が分かりやすいようにAngularの書き方で書いています。
① _.isNull()
Java・SpringBootなどのisNullメソッドと同様、nllかどうかを判定します。null以外はfalseになります。
null_sentence : string = null;
// 結果:nullです
if (_.isNull(null_sentence)) {
System.out.print("nullです。");
}
###②_.isUndefined()
関数にあるようにundefinedかどうかを判定します。それ以外の値に関してはfalseを返します。
undefined_sentence : string = undefined;
// 結果:undefinedです
if (_.isNil(undefined_sentence )) {
System.out.print("undefinedです。");
}
③_.isNil()
nullかundefinedかどうかを判定します。それ以外の値に関してはfalseを返します。
null_sentence : string = null;
undefined_sentence : string = undefined;
empty_sentence : string = "";
// 結果:nullです
if (_.isNil(null_sentence)) {
System.out.print("nullです。");
}
// 結果:undefinedです
if (_.isNil(undefined_sentence )) {
System.out.print("undefinedです。");
}
// 結果:何も返さない
if (_.isNil(empty_sentence)) {
System.out.print("空文字です。");
}
④_.isEmpty()
値が空かどうかを判定します。
ただし、数字・真偽値でも空判定されます。
(筆者はその仕様を知った時「と゛お゛し゛て゛た゛よ゛お゛お゛お゛!」とリアルで叫びました。)
また、半角スペースはfalseで返ります。
null_sentence : string = null;
undefined_sentence : string = undefined;
empty_sentence : string = "";
number_value : number= 1;
boolean_value : boolean = false;
array_value : string[] = [];
object_value : Object = {};
space_sentence : string = " ";
// 結果:nullです。
if (_.isEmpty(null_sentence )) {
System.out.print("nullです。");
}
// 結果:undefinedです。
if (_.isEmpty(undefined_sentence )) {
System.out.print("undefinedです。");
}
// 結果:空文字です。
if (_.isEmpty(empty_sentence )) {
System.out.print("空文字です。");
}
// 結果:1ですが空です。
if (_.isEmpty(number_value )) {
System.out.print("1ですが空です。");
}
// 結果:falseですが空です。
if (_.isEmpty(boolean_value )) {
System.out.print("falseですが空です。");
}
// 結果:空の配列です。
if (_.isEmpty(array_value )) {
System.out.print("空の配列です。");
}
// 結果:空のオブジェクトです。
if (_.isEmpty(object_value )) {
System.out.print("空のオブジェクトです。");
}
// 結果:何も返さない
if (_.isEmpty(space_sentence )) {
System.out.print("半角スペースです。");
}
| 引数 | 引数(コード) | _.isNull() | _.isUndefined() | _.isNil() | _.isEmpty() |
|----|----|----|----|----|
| null | null | true | false | true | true |
| undefined| '' | false | true | true | true |
| 空文字 | '' | false | false | false | true |
| 数字(0)| 0 | false | false | false | true |
| 数字(1)| 1 | false | false | false | true |
| 真偽値(true)| true | false | false | false | true |
| 真偽値(false)| false | false | false | false | true |
| 空の配列 | [] | false | false | false | true |
| 配列 | [0,1,2] | false | false | false | true |
| 空のオブジェクト| {} | false | false | false | true |
| オブジェクト | {0,1,2} | false | false | false | true |
3.さいごに
今回の記事は以上です。
次回のテーマは未定ですが、何かしら考えます。
よろしくお願いします。