if dictionary.has_key('school'):
¿Cómo escribirías esto en javascript?¿Cuál es el equivalente de "has_key" en javascript?
if dictionary.has_key('school'):
¿Cómo escribirías esto en javascript?¿Cuál es el equivalente de "has_key" en javascript?
if(Object.prototype.hasOwnProperty.call(dictionary, key)) {
// ...
También puede utilizar the in
operator, pero a veces da resultados no deseados:
console.log('watch' in dictionary); // always true
El operador 'in'.
if ('school' in dictionary)
Sólo una nota: el operador 'in' funciona de esta manera en Python también y muchas personas les resulta preferible a la' has_key) método ('. – brandizzi
@brandizzi, en realidad, has_key está en desuso, por lo que debe evitarse. –
ya sea con el operador in
:
if('school' in dictionary) { …
O, probablemente, soportada en más cisternas: hasOwnProperty
if(dictionary.hasOwnProperty('school')) { …
podría ser problemático en los casos fronterizos: typeof
if(typeof dictionary.school != 'undefined') { …
Hay que no utiliza != undefined
como no definidos es no una palabra clave y la semántica de lo varían entre los navegadores:
if(dictionary.school != undefined) { …
También puede probar:
if(dictionary.hasOwnProperty('school'))
El método hasOwnProperty
sólo se evaluará a true
si la propiedad es en realidad en la instancia, y no simplemente heredada del prototipo - como es el caso con in
.
Por ejemplo, la evaluación de ('toString' in myObject)
será true
, mientras que myObject.hasOwnProperty('toString')
será false
.
O incluso,
if(dictionary.school!=undefined)
¿Cuándo da resultados no deseados? – qwertymk
@qwertymk: a veces desea que solo devuelva 'verdadero' para las propiedades que ha agregado en el objeto en sí, en lugar de las heredadas con prototipos. El operador 'in' se parece más a' hasattr' de Python. – icktoofay