Apakah ada operator "tidak ada" dalam JavaScript untuk memeriksa apakah suatu properti tidak ada dalam suatu objek? Saya tidak dapat menemukan apa pun tentang ini di Google atau Stack Overflow. Berikut ini adalah potongan kecil kode yang saya kerjakan di mana saya memerlukan fungsionalitas semacam ini:
var tutorTimes = {};
$(checked).each(function(idx){
id = $(this).attr('class');
if(id in tutorTimes){}
else{
//Rest of my logic will go here
}
});
Seperti yang Anda lihat, saya akan memasukkan semuanya ke dalam else
pernyataan. Tampaknya salah bagi saya untuk membuat if
- else
pernyataan hanya dengan menggunakan else
bagian itu.
var id = ...
fungsi Anda.Jawaban:
Cukup negasikan kondisi Anda, dan Anda akan mendapatkan
else
logika di dalamif
:sumber
( ! somekey in someobj )
let keyExists = (key, obj) => key in obj
let hasProperty
"looks" betterSeperti yang sudah dikatakan oleh Jordão, sangkal saja:
Catatan: Tes di atas jika tutorTimes memiliki properti dengan nama yang ditentukan dalam id, di mana saja dalam rantai prototipe. Sebagai contoh
"valueOf" in tutorTimes
mengembalikan true karena didefinisikan dalam Object.prototype .Jika Anda ingin menguji apakah properti tidak ada di objek saat ini, gunakan hasOwnProperty:
Atau jika Anda mungkin memiliki kunci yang hasOwnPropery Anda dapat menggunakan ini:
sumber
if(!tutorTimes.hasOwnProperty('id')) ...
?id
adalah variabel yang dapat memiliki nilai apa pun,'id'
adalah string dengan dua huruf i dan d , jadihasOwnProperty(id)
periksa apakah properti yang ditentukan dalam id variabel ada, danhasOwnProperty('id')
periksa apakah ada properti bernama id.Secara pribadi saya temukan
lebih mudah dibaca daripada
tetapi keduanya akan bekerja.
sumber
Dua kemungkinan cepat:
atau
sumber
'undefined' === typeof xxx
sebagai gantinya.undefined
bukan kata yang dilindungi undang-undang dan sebenarnya merupakan variabel global yang dapat ditimpa (menyebabkan sulitnya menemukan bug)'foo' in myObj)
myObj['foo']
bisa ada sebagai properti dan hanya diatur keundefined
(yaitu, dengan pernyataanmyObj.foo = undefined
). Jika Anda benar-benar ingin melihat apakah properti itu sendiri tidak ada, Anda perlu!('foo' in myObj)
notasi.myObj.foo === undefined
jauh lebih cepat (meskipun berpotensi berbahaya): jsperf.com/not-in-vs-is-undefined .=== undefined
. Banyak hal yang dapat rusak jika orang menyalahgunakan bahasa pemrograman dengan melakukan hal-hal seperti, misalnya, menimpaundefined
JavaScript. Juga, lihat: stackoverflow.com/questions/8783510/…