Saya melihat pertanyaan ini , tetapi saya tidak melihat contoh spesifik JavaScript. Apakah ada yang sederhana string.Empty
tersedia di JavaScript, atau itu hanya kasus memeriksa ""
?
javascript
null
is-empty
casademora
sumber
sumber
Jawaban:
Jika Anda hanya ingin memeriksa apakah ada nilai, Anda bisa melakukannya
Jika Anda perlu memeriksa khusus untuk string kosong lebih null, saya akan berpikir memeriksa terhadap
""
adalah taruhan terbaik Anda, menggunakan para===
Operator (sehingga Anda tahu bahwa itu adalah, pada kenyataannya, string Anda membandingkan terhadap).sumber
=== ''
vs.length
tidak menunjukkan peningkatan yang terlihat (dan.length
hanya menggunakan jika Anda dapat mengasumsikan bahwa Anda memiliki string).length > 0
sebenarnya jauh lebih cepat daripada membandingkan dengan string literal! Lihatlah jsPerfUntuk memeriksa apakah string kosong, nol atau tidak terdefinisi, saya menggunakan:
Untuk memeriksa apakah string kosong, nol atau tidak terdefinisi, saya menggunakan:
Untuk memeriksa apakah string kosong atau hanya berisi ruang putih:
sumber
if (variable == constant value)
dan jika Anda lupa '=' maka Anda menetapkan nilai konstan ke variabel daripada pengujian. Kode masih akan berfungsi karena Anda dapat menetapkan variabel dalam if. Jadi cara yang lebih aman untuk menulis kondisi ini adalah dengan membalikkan nilai konstan dan variabel. Dengan cara ini ketika Anda menguji kode Anda, Anda akan melihat kesalahan (sisi kiri dalam penugasan). Anda juga dapat menggunakan sesuatu seperti JSHint untuk melarang tugas dalam kondisi dan diperingatkan saat Anda menulisnya./^\s*$/.test(str)
tidak bisa dibaca - mungkin menghilangkan spasi menggunakan kode atau regex yang lebih sederhana akan lebih baik? lihat stackoverflow.com/questions/6623231/… dan juga stackoverflow.com/questions/10800355/…if blue is the sky
. Lihat dodgycoder.net/2011/11/yoda-conditions-pokemon-exception.htmlSemua jawaban sebelumnya baik, tetapi ini akan lebih baik. Gunakan operator
!!
( bukan tidak ).Atau gunakan tipe casting:
Keduanya melakukan fungsi yang sama. Tipecast variabel ke Boolean, di mana
str
variabel.Ia kembali
false
untuknull,undefined,0,000,"",false
.Ini mengembalikan
true
untuk string "0" dan spasi putih "".sumber
if(str)
danif(!!str)
?var any = (!!str1 && !!str2 && !!str3)
menangani jika ada nomor di sana juga!!str.trim()
untuk memastikan string tidak hanya terbuat dari spasi putih saja.Boolean(str)
lebih mudah dibaca dan lebih sedikit "wtfish".Hal terdekat yang bisa Anda dapatkan
str.Empty
(dengan prasyarat bahwa str adalah sebuah String) adalah:sumber
str.Empty
.Jika Anda perlu memastikan bahwa string bukan hanya sekelompok ruang kosong (saya berasumsi ini untuk validasi formulir), Anda perlu melakukan penggantian pada spasi.
sumber
if(str.match(/\S/g)){}
str.match(/\S/)
var trimLeft = /^\s+/, trimRight = /\s+$/;
Saya menggunakan:
sumber
typeof
dalamswitch
tidak bekerja untuk saya. Saya menambahkanif (typeof e == "undefined")
tes dan berhasil. Mengapa?case undefined:
bukancase typeof(e) == "undefined":
?Anda dapat menggunakan lodash : _.isEmpty (nilai).
Ini mencakup banyak kasus seperti
{}
,''
,null
,undefined
, dllTetapi selalu kembali
true
untukNumber
jenis tipe data primitif JavaScript seperti_.isEmpty(10)
atau_.isEmpty(Number.MAX_VALUE)
keduanya kembalitrue
.sumber
_.isEmpty(" "); // => false
" "
tidak kosong._.isEmpty("");
mengembalikan true.Fungsi:
PS: Dalam JavaScript, jangan gunakan jeda baris setelah
return
;sumber
if
pernyataan.Mencoba:
sumber
str.trim().length
akan melakukan lebih cepat daripadastr.trim()
, sekitar 1% menurut hasil pengujian saya sendiri.if (!str) { ... }
Tidak ada yang mewakili string kosong dalam JavaScript. Lakukan pengecekan terhadap salah
length
(jika Anda tahu bahwa var akan selalu berupa string) atau menentang""
sumber
Saya tidak akan terlalu khawatir tentang metode yang paling efisien . Gunakan apa yang paling jelas untuk niat Anda. Bagi saya itu biasanya
strVar == ""
.Sesuai komentar dari Constantin , jika strVar dapat bagaimana akhirnya mengandung nilai integer 0, maka itu memang akan menjadi salah satu situasi yang mengklarifikasi niat.
sumber
===
akan lebih baik. Ini hanya mengembalikan true jikastrVar
string kosong.Banyak jawaban, dan banyak kemungkinan berbeda!
Tanpa ragu untuk implementasi cepat dan sederhana pemenangnya adalah:
if (!str.length) {...}
Namun, karena banyak contoh lain tersedia. Metode fungsional terbaik untuk ini, saya sarankan:
Agak berlebihan, saya tahu.
sumber
str.length === 0
mengembalikan true untuk fungsi apa pun yang tidak memiliki parameter formal.Anda juga bisa menggunakan ekspresi reguler:
Memeriksa string yang kosong atau diisi dengan spasi putih.
sumber
Performa
Saya melakukan tes pada macOS v10.13.6 (High Sierra) untuk 18 solusi yang dipilih. Solusi berfungsi sedikit berbeda (untuk data masukan kasus sudut) yang disajikan dalam cuplikan di bawah ini.
Kesimpulan
!str
,==
,===
danlength
cepat untuk semua browser (A, B, C, G, I, J)test
,replace
) dancharAt
paling lambat untuk semua browser (H, L, M, P)Detail
Dalam cuplikan di bawah ini saya membandingkan hasil dari 18 metode yang dipilih dengan menggunakan parameter input yang berbeda
""
"a"
" "
- string kosong, string dengan huruf dan string dengan spasi[]
{}
f
- Array, objek dan fungsi0
1
NaN
Infinity
- angkatrue
false
- Booleannull
undefined
Tidak semua metode yang diuji mendukung semua kasus masukan.
Tampilkan cuplikan kode
Dan kemudian untuk semua metode, saya melakukan test case kecepatan
str = ""
untuk browser Chrome v78.0.0, Safari v13.0.4, dan Firefox v71.0.0 - Anda dapat menjalankan tes pada mesin Anda di sinisumber
var a;
adapotong
false spaces
nilainya, lalu ujiemptiness
sumber
Juga, jika Anda menganggap string yang diisi spasi sebagai "kosong".
Anda dapat mengujinya dengan ekspresi reguler ini:
sumber
Saya biasanya menggunakan sesuatu seperti ini,
sumber
typeof variable != "undefined"
sebelum memeriksa apakah kosong.Saya belum melihat jawaban yang memperhitungkan kemungkinan karakter nol dalam sebuah string. Misalnya, jika kita memiliki string karakter nol:
Untuk menguji nullnessnya, seseorang dapat melakukan sesuatu seperti ini:
Ini bekerja pada string nol, dan pada string kosong dan dapat diakses untuk semua string. Selain itu, dapat diperluas untuk berisi JavaScript kosong atau karakter spasi lainnya (yaitu ruang nonbreaking, tanda urutan byte, pemisah baris / paragraf, dll.).
sumber
Sementara itu kita dapat memiliki satu fungsi yang memeriksa semua 'kosong' seperti null, undefined, '', '', {}, [] . Jadi saya hanya menulis ini.
Gunakan kasing dan hasil.
sumber
Sampai sekarang tidak ada metode langsung seperti string.empty untuk memeriksa apakah string kosong atau tidak. Tetapi dalam kode Anda, Anda dapat menggunakan pembungkus untuk memeriksa string kosong seperti:
Menggunakan ini, Anda juga dapat memastikan bahwa string tidak terdefinisi atau nol juga. Ingat, tidak terdefinisi, nol, dan kosong adalah tiga hal yang berbeda.
sumber
let rand = ()=>Math.random()
, lalurand && rand.length > 0)
kembalikan salah, tetapi jelas fn bukan "kosong". Yaitu mengembalikan false untuk fungsi apa pun yang tidak memiliki parameter format.Math.random()
mengembalikan nomor dan bukan string. Dan jawaban ini tentang string. ;-)Semua jawaban ini bagus.
Tetapi saya tidak dapat memastikan bahwa variabel adalah string, tidak hanya berisi spasi (ini penting bagi saya), dan dapat berisi '0' (string).
Versi saya:
Contoh di jsfiddle .
sumber
empty(0)
danempty(7)
harus mengembalikan nilai yang sama.empty("0")
harus kembalifalse
(karena itu bukan string kosong), tetapiempty(0)
harus kembalitrue
karena kosong :)empty
merupakan nama yang menyesatkan dalam kasus ini.empty
itu bagus. Dalam dokumen php untuk fungsi kosong :Returns FALSE if var exists and has a non-empty, non-zero value. Otherwise returns TRUE.
Perbedaan antaraPHP
dan fungsi ini - string'0'
itu tidak akan diidentifikasi sebagai kosong.empty
itu nama yang tidak akurat dan menyesatkan. Sangat menarik bahwa PHP juga memiliki fungsi yang tidak disebutkan namanyaempty
, tetapi kegagalan PHP tidak ada hubungannya dengan JavaScript.Saya tidak melihat jawaban yang bagus di sini (setidaknya bukan jawaban yang cocok untuk saya)
Jadi saya memutuskan untuk menjawab sendiri:
value === undefined || value === null || value === "";
Anda harus mulai memeriksa apakah itu tidak terdefinisi. Kalau tidak, metode Anda bisa meledak, dan kemudian Anda dapat memeriksa apakah itu sama dengan nol atau sama dengan string kosong.
Anda tidak dapat memiliki !! atau hanya
if(value)
karena jika Anda memeriksa0
itu akan memberi Anda jawaban yang salah (0 salah).Dengan demikian, bungkus dengan metode seperti:
public static isEmpty(value: any): boolean { return value === undefined || value === null || value === ""; }
PS: Anda tidak perlu memeriksa typeof , karena itu akan meledak dan melempar bahkan sebelum memasuki metode
sumber
Jika seseorang perlu mendeteksi tidak hanya string kosong tetapi juga kosong, saya akan menambahkan jawaban Goral:
sumber
Coba ini
sumber
"".value.length
akan menyebabkan kesalahan. Seharusnyastr.length === 0
TypeError
Ifstr
ini sama denganundefined
ataunull
Anda dapat dengan mudah menambahkannya ke objek String asli di JavaScript dan menggunakannya kembali berulang-ulang ...
Sesuatu yang sederhana seperti kode di bawah ini dapat melakukan pekerjaan untuk Anda jika Anda ingin memeriksa
''
string kosong:Kalau tidak, jika Anda ingin memeriksa
''
string kosong dan' '
dengan spasi, Anda dapat melakukannya dengan hanya menambahkantrim()
, sesuatu seperti kode di bawah ini:dan Anda bisa menyebutnya seperti ini:
sumber
!(!!this.length)
daripada hanya!this
(atau!this.trim()
untuk opsi kedua)? String nol-panjang sudah salah, tanda kurung berlebihan, dan meniadakannya tiga kali sama persis dengan meniadakannya sekali.Coba ini:
sumber
Saya melakukan riset tentang apa yang terjadi jika Anda melewatkan nilai non-string dan non-kosong / nol ke fungsi tester. Seperti yang diketahui banyak orang, (0 == "") benar dalam JavaScript, tetapi karena 0 adalah nilai dan bukan kosong atau nol, Anda mungkin ingin mengujinya.
Dua fungsi berikut ini mengembalikan true hanya untuk nilai yang tidak terdefinisi, null, kosong / spasi putih dan false untuk yang lainnya, seperti angka, Boolean, objek, ekspresi, dll.
Contoh yang lebih rumit ada, tetapi ini sederhana dan memberikan hasil yang konsisten. Tidak perlu menguji undefined, karena itu termasuk dalam (nilai == null) cek. Anda juga dapat meniru perilaku C # dengan menambahkannya ke String seperti ini:
Anda tidak ingin memasukkannya ke dalam prototipe Strings, karena jika instance dari kelas-String adalah nol, itu akan kesalahan:
Saya diuji dengan array nilai berikut. Anda dapat memutarnya untuk menguji fungsi Anda jika ragu.
sumber
Untuk memeriksa apakah itu benar-benar string kosong:
Untuk memeriksa apakah itu string kosong ATAU setara logis untuk nilai-tidak (nol, tidak terdefinisi, 0, NaN, false, ...):
sumber
Tidak ada
isEmpty()
metode, Anda harus memeriksa jenis dan panjangnya:Jenis pemeriksaan yang diperlukan untuk menghindari kesalahan runtime saat
test
iniundefined
ataunull
.sumber
Mengabaikan string spasi putih, Anda bisa menggunakan ini untuk memeriksa null, kosong, dan tidak terdefinisi:
Ini ringkas dan berfungsi untuk properti yang tidak terdefinisi, meskipun bukan yang paling mudah dibaca.
sumber