if dictionary.has_key('school'):
Jak napisać to w javascript?Jaki jest odpowiednik "has_key" w javascript?
if dictionary.has_key('school'):
Jak napisać to w javascript?Jaki jest odpowiednik "has_key" w javascript?
if(Object.prototype.hasOwnProperty.call(dictionary, key)) {
// ...
Można również użyć the in
operator, ale czasami daje niepożądane skutki:
console.log('watch' in dictionary); // always true
Operator "w".
if ('school' in dictionary)
Tylko uwaga: 'operator in' działa w ten sposób w Pythonie i zbyt wiele osób uważa za pożądane do' has_key() 'metoda. – brandizzi
@brandizzi, właściwie has_key jest przestarzałe, więc powinno się go unikać. –
Każda z operatorem in
:
if('school' in dictionary) { …
Albo prawdopodobnie obsługiwane więcej stacje paliwa: hasOwnProperty
if(dictionary.hasOwnProperty('school')) { …
mogą okazać się problematyczne w przypadkach granicznych: typeof
if(typeof dictionary.school != 'undefined') { …
Trzeba nie używać != undefined
jako niezdefiniowany jest nie kluczowe i semantyka nim różnią się w zależności od przeglądarki:
if(dictionary.school != undefined) { …
Możesz też spróbować:
if(dictionary.hasOwnProperty('school'))
Sposób hasOwnProperty
oceni tylko true
jeżeli nieruchomość jest faktycznie na przykład, a nie po prostu dziedziczone od prototypu - jak jest w przypadku z in
.
Przykładowo evaluting ('toString' in myObject)
będzie true
, a myObject.hasOwnProperty('toString')
będzie false
.
Albo nawet,
if(dictionary.school!=undefined)
Kiedy daje niepożądane rezultaty? – qwertymk
@qwertymk: Czasami ma on zwracać tylko wartość "true" dla właściwości dodanych do samego obiektu, a nie dziedziczonych z prototypami. Operator 'in' jest bardziej podobny do' hasattr' w języku Python. – icktoofay