jquery-out-of-the-boxで空の文字列をテストする最良の方法は何ですか?


229

プラグインなしで、jquery-out-of-the-boxで空の文字列をテストする最良の方法は何ですか?私はこれを試しました

しかし、少なくともそのままでは機能しませんでした。組み込みのものを使用するとよいでしょう。

繰り返したくない

if (a == null || a=='')

どこかif (isempty(a)) が利用可能であればどこでも 。



回答:


556
if (!a) {
  // is emtpy
}

文字列の空白を無視するには:

if (!a.trim()) {
    // is empty or whitespace
}

のレガシーサポート(IE8-)が必要な場合はtrim()$.trimまたはポリフィルを使用してください


10
@CoffeeAddict空の文字列はJavaScriptでは偽なので、そうaです。 ""またはその他の偽の値(null、false、undefined、0、NaN)の場合、式はtrueと評価されます。
David Hellsing、

21
空白のみの文字列も照合する必要がある場合は、使用することをお勧めしますif (!$.trim(a))
Ilari Kajaste 2013

3
私の経験では、このテストを実行したい場合の大部分は、空白のテストも含める必要があります。これは通常のケースなので、OPは彼の回答に@IlariKajasteからのコメントを含める必要があります
Bane

17
受け入れ答えは、ときに入力A 0、しかし、それは1のために働く、2、3、4など失敗します
スティーブン・

5
if (!a.trim())少し危険じゃないですか?a未定義またはnullの場合はどうなりますか?
Timo

27

あなたが与えたリンクは、繰り返しを避けようとしているテストとは異なる何かを試みているようです。

if (a == null || a=='')

文字列が空の文字列またはnullかどうかをテストします。リンクした記事は、文字列全体が空白で構成されている(または空である)かどうかをテストします。

あなたが説明したテストは次のものに置き換えることができます:

if (!a)

JavaScriptでは、空の文字列とnullの両方がブールコンテキストでfalseと評価されるためです。


if(!a)例えば4つのスペースで構成される文字列では失敗しませんか?``
KNU 2015年

@KNUはい、ただし質問では空の文字列について尋ねられ、スペースで構成される文字列は空の文字列ではありません。質問された内容とリンクされたコードの機能の違いについて私が書いた内容を確認してください
SpoonMeiser 2015年

この答えは間違っています。'0'は空の文字列のように扱われますが、そうではありません。
John Henckel

@JohnHenckel:0空の文字列のように扱われますが、ではありません"0"。それがあなたの意図したことだと思いますか?これがa文字列またはnullのいずれかであることがわかっている場合に使用されていると考えられますが、そうです。知っておくべきこと。
SpoonMeiser 2016年

25

デビッドの答えに基づいて、私は与えられたオブジェクトが文字列であるかどうかを最初にチェックするのが好きです。そうで.trim()ない場合、存在しないオブジェクトを呼び出すと例外がスローされます。

function isEmpty(value) {
  return typeof value == 'string' && !value.trim() || typeof value == 'undefined' || value === null;
}

使用法:

isEmpty(undefined); // true
isEmpty(null); // true
isEmpty(''); // true
isEmpty('foo'); // false
isEmpty(1); // false
isEmpty(0); // false


5

jQueryを使用して、データが空の文字列であるかどうかを確認し(空白は無視してください)

function isBlank( data ) {
    return ( $.trim(data).length == 0 );
}

5

null、undefined、 ''、 ''、{}、[]などのすべての「空」をチェックします。

var isEmpty = function(data) {
    if(typeof(data) === 'object'){
        if(JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]'){
            return true;
        }else if(!data){
            return true;
        }
        return false;
    }else if(typeof(data) === 'string'){
        if(!data.trim()){
            return true;
        }
        return false;
    }else if(typeof(data) === 'undefined'){
        return true;
    }else{
        return false;
    }
}

ユースケースと結果。

console.log(isEmpty()); // true
console.log(isEmpty(null)); // true
console.log(isEmpty('')); // true
console.log(isEmpty('  ')); // true
console.log(isEmpty(undefined)); // true
console.log(isEmpty({})); // true
console.log(isEmpty([])); // true
console.log(isEmpty(0)); // false
console.log(isEmpty('Hey')); // false

3
if(!my_string){ 
// stuff 
}

そして

if(my_string !== "")

nullは受け入れたいが空は拒否したい場合

編集:おっと、あなたの状態が空かどうか忘れてしまった


2

これをブラウザーコンソールまたはnode.js replで実行してみてください。

var string = ' ';
string ? true : false;
//-> true

string = '';
string ? true : false;
//-> false

したがって、テストには単純な分岐構造で十分です。

if(string) {
    // string is not empty
}

1
「string?true:false」の代わりに「!! string」、または単に「string」と言う方が良いでしょう。
アレックス

2

数値や固定タイプの文字列を入力することもできるため、答えは実際には次のようになります。

function isBlank(value) {
  return $.trim(value);
}

こんな感じじゃないの?return !!$.trim(value);
wonsuc


-4
if((a.trim()=="")||(a=="")||(a==null))
{
    //empty condition
}
else
{
    //working condition
}

であるならばnull、その後a.trim()失敗するだろう。これは物事をチェックするための悪い順序です。そして、あなたが順序を変更した場合、あなたの答えは何も提供しません、それは以前には提案されていませんでした。
マイクスコッティ2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.