Bagaimana untuk menentukan sama ada medan tertentu wujud dalam data JSON yang dihantar?
1.obj["key"] != undefined
Ini rosak jika kunci ditakrifkan dan nilainya selalunya tidak ditentukan, maka akan ada masalah dengan ayat ini.
2.!("kunci" dalam obj)
3.obj.hasOwnProperty("kunci")
Dua kaedah ini lebih baik dan disyorkan.
Jawapan asal:
Sebenarnya, menyemak undefined-ness bukanlah cara yang tepat untuk menguji sama ada kunci wujud. Bagaimana jika kunci itu wujud tetapi nilainya sebenarnya tidak ditentukan?
var obj = { key: undefined };
obj["key"] != undefined // false, tetapi kunci itu wujud!
Sebaliknya anda harus menggunakan operator dalam:
"kunci" dalam obj // benar, tanpa mengira nilai sebenar
Jika anda ingin menyemak sama ada kunci tidak wujud, ingat untuk menggunakan kurungan:
!("kunci" dalam obj) // benar jika "kunci" tidak wujud dalam objek
!"kunci" dalam obj // ERROR! Bersamaan dengan "false dalam obj"
Atau, jika anda ingin menguji khasnya untuk sifat contoh objek (dan bukan sifat yang diwarisi), usehasOwnProperty:
obj.hasOwnProperty("kunci") // benar