freeCodeCamp/curriculum/challenges/portuguese/02-javascript-algorithms-an.../basic-data-structures/check-if-an-object-has-a-pr...

3.1 KiB

id title challengeType forumTopicId dashedName
587d7b7d367417b2b2512b1c Verificar se um objeto tem uma propriedade 1 301155 check-if-an-object-has-a-property

--description--

Agora podemos adicionar, modificar e remover as chaves dos objetos. Mas e se apenas quiséssemos saber se um objeto tem uma propriedade específica? O JavaScript nos fornece duas maneiras diferentes de fazer isso. Um usa o método hasOwnProperty() e o outro usa a palavra-chave in. Se tivermos um objeto users com uma propriedade de Alan, poderíamos verificar a sua presença de qualquer uma das seguintes maneiras:

users.hasOwnProperty('Alan');
'Alan' in users;

Ambos esses retornariam true.

--instructions--

Termine de escrever a função para que ela retorne verdadeiro se o objeto passado a ela contiver todos os quatro nomes, Alan, Jeff, Sarah e Ryan e retorna falso caso contrário.

--hints--

O objeto users não deve ser acessado diretamente


assert(code.match(/users/gm).length <= 2)

O objeto users deve conter apenas as chaves Alan, Jeff, Sarah e Ryan

assert(
  'Alan' in users &&
    'Jeff' in users &&
    'Sarah' in users &&
    'Ryan' in users &&
    Object.keys(users).length === 4
);

A função isEveryoneHere deve retornar true se Alan, Jeff, Sarah, e Ryan forem propriedades do objeto passado como argumento.

assert(isEveryoneHere(users) === true);

A função isEveryoneHere deve retornar false se Alan não for uma propriedade do objeto passado como argumento.

assert(
  (function () {
    delete users.Alan;
    return isEveryoneHere(users);
  })() === false
);

A função isEveryoneHere deve retornar false se Jeff não for uma propriedade no objeto passado como argumento.

assert(
  (function () {
    delete users.Jeff;
    return isEveryoneHere(users);
  })() === false
);

A função isEveryoneHere deve retornar false se Sarah não for uma propriedade do objeto passado como argumento.

assert(
  (function () {
    delete users.Sarah;
    return isEveryoneHere(users);
  })() === false
);

A função isEveryoneHere deve retornar false se Ryan não for uma propriedade do objeto passado como argumento.

assert(
  (function () {
    delete users.Ryan;
    return isEveryoneHere(users);
  })() === false
);

--seed--

--seed-contents--

let users = {
  Alan: {
    age: 27,
    online: true
  },
  Jeff: {
    age: 32,
    online: true
  },
  Sarah: {
    age: 48,
    online: true
  },
  Ryan: {
    age: 19,
    online: true
  }
};

function isEveryoneHere(userObj) {
  // Only change code below this line

  // Only change code above this line
}

console.log(isEveryoneHere(users));

--solutions--

let users = {
  Alan: {
    age: 27,
    online: true
  },
  Jeff: {
    age: 32,
    online: true
  },
  Sarah: {
    age: 48,
    online: true
  },
  Ryan: {
    age: 19,
    online: true
  }
};

function isEveryoneHere(userObj) {
  return [
    'Alan',
    'Jeff',
    'Sarah',
    'Ryan'
  ].every(user => userObj.hasOwnProperty(user));
}

console.log(isEveryoneHere(users));