Javascriptdə boş simli / undefined / null yoxlamaq üçün necə?

Bu axını gördüm, ancaq xüsusi bir JavaScript nümunəsini görmədim. Javascriptdə mövcud olan bir sadə string.Empty varmı, yoxsa "" üçün yoxlanılır?

2292
30 сент. casademora 30 sep qurdu . 2008-09-30 20:17 '08 at 8:17 pm 2008-09-30 20:17
@ 40 cavab
  • 1
  • 2

Əgər hər hansı bir dəyərin olmadığını yoxlamaq istəyirsinizsə, bunu edə bilərsiniz

 if (strValue) { //do something } 

Boş boşluğu boş bir boşluqla yoxlamağınız tələb edərsə, "" === operatoru istifadə edərək ən yaxşı seçimdir "" (bu, əsasən siz müqayisə etdiyiniz simli olduğunu bilirsiniz).

 if (strValue === "") { //... } 
2905
30 сент. Cavab 30 sentyabrda verilir 2008-09-30 20:20 '08 at 20:20 pm 2008-09-30 20:20

Dizənin boş, boş və ya müəyyən olmadığını yoxlamaq üçün mən istifadə edirəm:

 function isEmpty(str) { return (!str || 0 === str.length); } 

Boş bir simli yoxlamaq üçün, null və ya undefined, mən istifadə:

border=0
 function isBlank(str) { return (!str || /^\s*$/.test(str)); } 

Simli boş olub olmadığını yoxlamaq üçün və ya yalnız bir boşluq var:

 String.prototype.isEmpty = function() { return (this.length === 0 || !this.trim()); }; 
942
16 июля '10 в 4:45 2010-07-16 04:45 Cavab Jano Gonzalez tərəfindən 16 iyul, '10 'də saat 04:45 ' da 2010-07-16 04:45 'də verildi

Yuxarıdakı bütün yaxşıdır, amma daha da yaxşı olacaq. operatoru istifadə edin !! (deyil).

 if(!!str){ some code here; } 

və ya istifadənin döküm növü:

 if(Boolean(str)){ codes here; } 

Hər ikisi də eyni funksiyanı yerinə yetirir, tip, qaynaqlanan bir dəyişənə çevrilir, burada str bir dəyişəndir.
null,undefined,0,000,"",false üçün false qaytarır.
"0" simli və "" yer üçün true qaytarır.

241
30 марта '11 в 16:34 2011-03-30 16:34 Cavab karthick.sk 30 mart 'da verildi 16:34 2011-03-30 16:34

Dizəyin yalnız boş bir boşluq olmadığından əmin olmanız lazımdır (bu formanı yoxlamaq üçün olduğumu düşünürəm) boşluqlarda əvəz etmək lazımdır.

 if(str.replace(/\s/g,"") == ""){ } 
94
01 окт. Suqendran tərəfindən 01 oktyabrda cavab verildi 2008-10-01 02:08 '08 saat 02:08 'da 2008-10-01 02:08

str.Empty (str bir String olan ön şərt ilə) əldə edə bilərsiniz ən yaxın şey:

 if (!str.length) { ... 
83
30 сент. Cavab Ates Goral 30 sep verilir. 2008-09-30 22:17 '08 at 10:17 pm 2008-09-30 22:17

Mən istifadə edirəm:

51
09 июля '10 в 21:52 2010-07-09 21:52 Cavab 09 iyul 2010-cu il tarixində saat 09: 52-da verilmişdir

Keçir:

 if (str  str.trim().length) { //... } 
27
09 янв. cavab Yang Dong 09 yanvar verilir. 2013-01-09 05:54 '13 at 5:54 2013-01-09 05:54

Funksiyası:

 function is_empty(x) { return ( (typeof x == 'undefined') || (x == null) || (x == false) //same as: !x || (x.length == 0) || (x == "") || (x.replace(/\s/g,"") == "") || (!/[^\s]/.test(x)) || (/^\s*$/.test(x)) ); } 

ps Javascript-də, return sonra bir line fasilə istifadə etməyin;

26
27 февр. T.Todua tərəfindən cavab Feb. 27 2014-02-27 23:31 '14 da 23:31 2014-02-27 23:31
 var s; // undefined var s = ""; // "" s.length // 0 

Heç bir şey javascriptdə boş bir simli təmsil edir. length yoxlayın (əgər Var hər zaman bir simli olacağını bilirsinizsə) və ya "" qarşı

25
30 сент. cavab Sep 30 verildi 2008-09-30 20:42 '08 at 8:42 pm 2008-09-30 20:42

Ən effektiv üsuldan çox narahat olmayacağam. Niyyətinizə ən aydın olanları istifadə edin. Mənim üçün bu genellikle strVar == "" .

EDIT: Constantin- dən bir şərh üçün, əgər strVar birbaşa tamsayı dəyərinə 0 qoysa, bu həqiqətən bu vəziyyətlərdən biri ola bilər.

24
30 сент. Chris Noe tərəfindən verilmiş cavab 30 sentyabr 2008-09-30 20:20 '08 at 20:20 pm 2008-09-30 20:20

Siz lövhəni istifadə edə bilərsiniz: _.isEmpty (dəyər).

Bu, {} , '' , null , undefined , və s. Kimi bir çox işi əhatə edir.

Amma həmişə Number növü Javascript üçün true . _.isEmpty(10) və ya _.isEmpty(Number.MAX_VALUE) kimi primitiv məlumat növləri true .

23
17 авг. Cavab Moshii 17 aug verilir . 2017-08-17 09:51 '17 saat 09:51 'da 2017-08-17 09:51

Ayrıca normal ifadələrdən istifadə edə bilərsiniz:

 if((/^\s*$/).test(str)) { } 

Boş və ya boşluqlarla doldurulmuş xəttləri yoxlayır.

18
31 мая '10 в 17:57 2010-05-31 17:57 cavab 31 may 2010-cu il saat 17: 57 -da verilir. 2010-05-31 17:57

Bir çox cavab və bir çox fərqli xüsusiyyət!

Şübhəsiz, sürətli və asan bir şəkildə həyata keçirilməsi üçün qalib: if (!str.length) {...}

Ancaq digər nümunələr kimi. Bunun üçün ən yaxşı funksional üsul təklif edirəm:

15
31 марта '16 в 11:29 2016-03-31 11:29 cavab 31 mart 'da 11:29' də veriləcək, 2016-03-31 11:29
  • var a; mövcuddur
  • dəyərdə false spaces redaktə edin, sonra emptiness yoxlayın

     if ((a) { // if variable a is not empty do this } 
14
24 февр. 24 Fevralda Timoti Nwanwene tərəfindən verilmiş cavab. 2015-02-24 18:38 '15 at 18:38 'də 2015-02-24 18:38

Ayrıca, dolu məkanı düşünsəniz, simli "boş". Bunu bu normal ifadə ilə yoxlaya bilərsiniz:

 !/\S/.test(string); // Returns true if blank. 
13
15 мая '13 в 17:55 2013-05-15 17:55 cavab Wab_Z 15 May 'da verilir 17:55 2013-05-15 17:55

Mən adətən bu kimi bir şey istifadə edirəm,

 if (!str.length) { //do some thing } 
11
09 авг. Cavab user2086641 09 avqustda verilir . 2013-08-09 13:10 '13 at 13:10 2013-08-09 13:10

Yalnız boş deyil, boş xəttləri aşkar etməyiniz lazım olsa, cavabı verəcəyəm:

 function isEmpty(s){ return !s.length; } function isBlank(s){ return isEmpty(s.trim()); } 
9
01 окт. Oct. 01- də Josef.B tərəfindən verilmiş cavab 2014-10-01 09:55 '14 da 9:55 2014-10-01 09:55

Mən simli boş simvolların ehtimalını nəzərə alan bir cavab görmədim. Məsələn, null xarakterli bir simli varsa:

 var y = "\0"; // an empty string, but has a null character (y === "") // false, testing against an empty string does not work (y.length === 0) // false (y) // true, this is also not expected (y.match(/^[\s]*$/)) // false, again not wanted 

Onun etibarsızlığını yoxlamaq üçün belə bir şey edə bilərsiniz:

 String.prototype.isNull = function(){ return Boolean(this.match(/^[\0]*$/)); } ... "\0".isNull() // true 

Boş bir xəttlə və boş bir xəttlə işləyir və bütün xətlər üçün mövcuddur. Bundan əlavə, digər JavaScript boşluqlarını və boşluq simvollarını (yəni istifadə edilməmiş yer, bayt işarəsi, satır / paraqraf ayırıcı və s.) Ehtiva etmək üçün genişləndirilə bilər.

9
31 июля '12 в 17:05 2012-07-31 17:05 Cavab Bikush tərəfindən 31 iyul 2012- ci il saat 17 : 05-da verilir. 2012-07-31 17:05

Bütün bu cavablar yaxşıdır.

Amma dəyişən bir simli olduğundan əmin deyiləm, yalnız boşluqları içermir (bu mənim üçün vacibdir) və '0' (string) ola bilər.

Mənim versiyam:

 function empty(str){ return !str || !/[^\s]+/.test(str); } empty(null); // true empty(0); // true empty(7); // false empty(""); // true empty("0"); // false empty(" "); // true 

Nümunə csfiddle .

8
08 мая '13 в 20:15 2013-05-08 20:15 Cavab 08 may 2013-cü il tarixində Andron tərəfindən verilir. 2013-05-08 20:15

Boşluqlarla xətləri məhdudlaşdırmadan, sıfır, boş və undefined yoxlamaq üçün istifadə edə bilərsiniz:

 var obj = {}; (!!obj.str) //returns false obj.str = ""; (!!obj.str) //returns false obj.str = null; (!!obj.str) //returns false 

Qısaca, və ən oxunan deyil, baxmayaraq ki, xüsusiyyətləri təsvirsiz işləyir.

7
19 июля '12 в 5:00 2012-07-19 05:00 Cavab mricci 19 iyul '12 'də verilir 5:00 2012-07-19 05:00

Mən birləşməni istifadə edirəm, ən sürətli yoxlamalar ilk olaraq həyata keçirilir.

 function isBlank(pString){ if (!pString || pString.length == 0) { return true; } // checks for a non-white space character // which I think [citation needed] is faster // than removing all the whitespace and checking // against an empty string return !/[^\s]+/.test(pString); } 
7
01 июня '11 в 18:40 2011-06-01 18:40 Cavab veriləcək 01 iyun 'da 6:40' da 2011-06-01 18:40

Bu arada, biz "boş" null, undefined, '', '', {}, [] kimi yoxlayan bir funksiyaya sahib ola bilərik. Buna görə də yazdım.

 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; } } 

Vəziyyətləri və nəticələri istifadə edin.

 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 
7
12 марта '18 в 11:48 2018-03-12 11:48 Cavab 12 Mart, 12: 18-də İmran'a verilir , 2018-03-12 11:48

simli tam boş olub olmadığını yoxlamaq üçün:

 if(val==="")... 

boş bir simli mi yoxsa dəyəri yoxluğunun məntiqi ekvivalentini yoxlamaq üçün (null, undefined, 0, NaN, false, ...):

 if(!val)... 
7
02 июня '17 в 11:33 2017-06-02 11:33 Cavab Luca C tərəfindən verilir. 02 iyun 'da 11:33 2017-06-02 11:33

Tester funksiyasına qeyri-lineer və qeyri-boş / sıfır funksiyadan keçdiyinizdə nə baş verdiyini araşdırdım. Bir çoxu bilir ki, (0 == "") javascriptdə doğrudur, amma 0 dəyərdir, boş və ya sıfır deyilsə, onu yoxlaya bilərsiniz.

Aşağıdakı iki funksiya yalnız rəqəmlər, mantıksal, obyektlər, ifadələr və s. Kimi hər şey üçün qeyri-müəyyən, null, boş / boşluq və saxta dəyərlər üçün doğrudur.

 function IsNullOrEmpty(value) { return (value == null || value === ""); } function IsNullOrWhiteSpace(value) { return (value == null || !/\S/.test(value)); } 

Daha mürəkkəb nümunələr var, lakin onlar sadədir və ardıcıl nəticələr verir. (Dəyər == null) daxil olduğu üçün müəyyənləşdirilməyə ehtiyac yoxdur. Siz həmçinin Stringə aşağıdakı kimi əlavə edərək C # davranışını simulyasiya edə bilərsiniz:

 String.IsNullOrEmpty = function (value) { ... } 

Siz String prototipinə qoymaq istəmirsiniz, çünki əgər String sinifinin bir nümunəsi null olarsa, səhv olar:

 String.prototype.IsNullOrEmpty = function (value) { ... } var myvar = null; if (1 == 2) { myvar = "OK"; } // could be set myvar.IsNullOrEmpty(); // throws error 

Aşağıdakı sıra dəyərlərini test etdim. Şübhə varsa, funksiyasını yoxlamaq üçün onu proqramlaşdıra bilərsiniz.

 // Helper items var MyClass = function (b) { this.a = "Hello World!"; this.b = b; }; MyClass.prototype.hello = function () { if (this.b == null) { alert(this.a); } else { alert(this.b); } }; var z; var arr = [ // 0: Explanation for printing, 1: actual value ['undefined', undefined], ['(var) z', z], ['null', null], ['empty', ''], ['space', ' '], ['tab', '\t'], ['newline', '\n'], ['carriage return', '\r'], ['"\\r\\n"', '\r\n'], ['"\\n\\r"', '\n\r'], ['" \\t \\n "', ' \t \n '], ['" txt \\t test \\n"', ' txt \t test \n'], ['"txt"', "txt"], ['"undefined"', 'undefined'], ['"null"', 'null'], ['"0"', '0'], ['"1"', '1'], ['"1.5"', '1.5'], ['"1,5"', '1,5'], // valid number in some locales, not in js ['comma', ','], ['dot', '.'], ['".5"', '.5'], ['0', 0], ['0.0', 0.0], ['1', 1], ['1.5', 1.5], ['NaN', NaN], ['/\S/', /\S/], ['true', true], ['false', false], ['function, returns true', function () { return true; } ], ['function, returns false', function () { return false; } ], ['function, returns null', function () { return null; } ], ['function, returns string', function () { return "test"; } ], ['function, returns undefined', function () { } ], ['MyClass', MyClass], ['new MyClass', new MyClass()], ['empty object', {}], ['non-empty object', { a: "a", match: "bogus", test: "bogus"}], ['object with toString: string', { a: "a", match: "bogus", test: "bogus", toString: function () { return "test"; } }], ['object with toString: null', { a: "a", match: "bogus", test: "bogus", toString: function () { return null; } }] ]; 
7
14 мая '13 в 13:18 2013-05-14 13:18 cavab 14 may, 13 saat 13:18 2013-05-14 13:18 tarixində JHM tərəfindən verilir

isEmpty() metodu yoxdur, siz növü və uzunluğunu yoxlamaq lazımdır:

 if (typeof test === 'string'  test.length === 0){ ... 

test undefined və ya null olduğu halda, runtime səhvlərindən qaçınmaq üçün yoxlanış növü lazımdır.

6
05 нояб. Cavab Agustí Sánchez 05 noyabr. 2016-11-05 01:28 '16 'da 1:28 2016-11-05 01:28

Bunu sınayın

 str.value.length == 0 
6
22 июля '10 в 18:30 2010-07-22 18:30 Cavab Doug tərəfindən 22 İyulda '10 saat 18:30 'da veriləcəkdir 2010-07-22 18:30

Mən adətən aşağıdakı kimi bir şey istifadə edirəm:

 if (str == "") { //Do Something } else { //Do Something Else } 
6
15 февр. Cavab jmc734 tərəfindən verilir 15 fevral. 2010-02-15 05:46 '10 at 5:46 AM 2010-02-15 05:46

Test etdiyiniz dəyişənin bir simli olduğunu düşünməyin. Bu varın uzunluğuna sahib olmağı düşünməyin, onda bir simli.

Əslində tətbiqinizin nə etməsi və qəbul edə biləcəyini diqqətlə düşünün. Etibarlı bir şey yaradın.

Metod / funksiyanız boş olmayan bir dize idarə etməlidirsə, arqumentin boş bir dize olub olmadığını yoxlayın və "hiylə" yerinə yetirməyin.

Partlayışa səbəb olan bir şey nümunəsi olaraq, burada bəzi məsləhətləri təqib etsəniz diqqətli olmur.

 var getLastChar = function (str) { if (str.length > 0) return str.charAt(str.length - 1) } getLastChar('hello') => "o" getLastChar([0,1,2,3]) => TypeError: Object [object Array] has no method 'charAt'var getLastChar = function (str) { if (str.length > 0) return str.charAt(str.length - 1) } getLastChar('hello') => "o" getLastChar([0,1,2,3]) => TypeError: Object [object Array] has no method 'charAt' 

Beləliklə, qalacağam

 if (myVar === '') ...if (myVar === '') ... 
5
15 июля '13 в 13:55 2013-07-15 13:55 cavab 15 iyul 2013-cü il saat 13: 55-də Amida'ya verilir
 function tell() { var pass = document.getElementById('pasword').value; var plen = pass.length; now you can check if your string is empty as like if(plen==0) { alert('empty'); } else { alert('you entered something'); } } <input type='text' id='pasword' /> 

Bu, bir sahənin boş olduğunu yoxlamaq üçün ümumi bir yoldur.

4
06 авг. Cavab Məhəmməd Salman tərəfindən 06 Avqust 06 2010-08-06 19:28 '10 saat 19:28 'da 2010-08-06 19:28

Aşağıdakı üsulları yoxlaya və fərqini anlayasınız.

4
30 нояб. Cavab KARTHIKEYAN.A 30 noyabrda verilir. 2017-11-30 09:26 '17 saat 09:26 'da 2017-11-30 09:26
  • 1
  • 2

tags ilə bağlı digər suallar və ya bir sual verin