javascript hasOwnProperty () não encontrando propriedade
-
21-12-2019 - |
Pergunta
Trabalhando com angularjs e firebase escrevendo uma função que deve verificar se o currentUser pode ser encontrado no banco de dados.No momento a propriedade "atendimentos" contém apenas um usuário e esse é "Peter Pan"
serviços/festa.js
isAttending: function (party) {
if (User.signedIn() && party.attendings) {
console.log(User.getCurrent().username); //Writes out: Peter Pan
console.log(eve.attendings); //Writes out: Peter Pan
console.log(party.attendings.hasOwnProperty(
User.getCurrent().username); //Writes out: false
return party.attendings.hasOwnProperty(User.getCurrent().username);
}
}
Peter Pan foi armazenado quando o objeto party foi criado:
var Party = {
..
create: function (p) {
...
party.attendings = user.username;
...
}
}
O usuário aparentemente está armazenado em 'atendimentos', mas por que hasOwnProperty() não o encontra?
Solução
Acho que você está enganado sobre como funciona o hasOwnProperty.
hasOwnProperty retornará se o objeto tiver uma propriedade, no seu caso, party tem uma propriedade atende por exemplo, mas isso é tudo que ele irá verificar, não irá verificar qual é o valor desta propriedade (neste caso Peter Pan).
Agora, presumo que você gostaria que o atendimento fosse uma lista, nesse caso você precisa encontrar um valor em uma lista, existem várias maneiras, se você puder usar jQuery você poderia fazer algo como:
$.inArray( User.getCurrent().username, [ party.attendings ] );
Caso contrário, dê uma olhada em diferentes alternativas apenas pesquisando no Google para encontrar um valor em uma matriz em javascript.