--- id: 587d7b7d367417b2b2512b1c title: Check if an Object has a Property challengeType: 1 --- ## Description
Now we can add, modify, and remove keys from objects. But what if we just wanted to know if an object has a specific property? JavaScript provides us with two different ways to do this. One uses the hasOwnProperty() method and the other uses the in keyword. If we have an object users with a property of Alan, we could check for its presence in either of the following ways:
users.hasOwnProperty('Alan');
'Alan' in users;
// both return true
## Instructions
We've created an object, users, with some users in it and a function isEveryoneHere, which we pass the users object to as an argument. Finish writing this function so that it returns true only if the users object contains all four names, Alan, Jeff, Sarah, and Ryan, as keys, and false otherwise.
## Tests
```yml tests: - text: 'The users object only contains the keys Alan, Jeff, Sarah, and Ryan' testString: 'assert("Alan" in users && "Jeff" in users && "Sarah" in users && "Ryan" in users && Object.keys(users).length === 4, "The users object only contains the keys Alan, Jeff, Sarah, and Ryan");' - text: 'The function isEveryoneHere returns true if Alan, Jeff, Sarah, and Ryan are properties on the users object' testString: 'assert(isEveryoneHere(users) === true, "The function isEveryoneHere returns true if Alan, Jeff, Sarah, and Ryan are properties on the users object");' - text: 'The function isEveryoneHere returns false if Alan is not a property on the users object' testString: 'assert((function() { delete users.Alan; return isEveryoneHere(users) })() === false, "The function isEveryoneHere returns false if Alan is not a property on the users object");' - text: 'The function isEveryoneHere returns false if Jeff is not a property on the users object' testString: 'assert((function() { delete users.Jeff; return isEveryoneHere(users) })() === false, "The function isEveryoneHere returns false if Jeff is not a property on the users object");' - text: 'The function isEveryoneHere returns false if Sarah is not a property on the users object' testString: 'assert((function() { delete users.Sarah; return isEveryoneHere(users) })() === false, "The function isEveryoneHere returns false if Sarah is not a property on the users object");' - text: 'The function isEveryoneHere returns false if Ryan is not a property on the users object' testString: 'assert((function() { delete users.Ryan; return isEveryoneHere(users) })() === false, "The function isEveryoneHere returns false if Ryan is not a property on the users object");' ```
## Challenge Seed
```js let users = { Alan: { age: 27, online: true }, Jeff: { age: 32, online: true }, Sarah: { age: 48, online: true }, Ryan: { age: 19, online: true } }; function isEveryoneHere(obj) { // change code below this line // change code above this line } console.log(isEveryoneHere(users)); ```
## Solution
```js let users = { Alan: { age: 27, online: true }, Jeff: { age: 32, online: true }, Sarah: { age: 48, online: true }, Ryan: { age: 19, online: true } }; function isEveryoneHere(obj) { return [ 'Alan', 'Jeff', 'Sarah', 'Ryan' ].every(i => obj.hasOwnProperty(i)); } console.log(isEveryoneHere(users)); ```