153 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
id: 587d7b7d367417b2b2512b1c
 | 
						|
title: Check if an Object has a Property
 | 
						|
challengeType: 1
 | 
						|
forumTopicId: 301155
 | 
						|
dashedName: check-if-an-object-has-a-property
 | 
						|
---
 | 
						|
 | 
						|
# --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:
 | 
						|
 | 
						|
```js
 | 
						|
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.
 | 
						|
 | 
						|
# --hints--
 | 
						|
 | 
						|
The `users` object should only contain the keys `Alan`, `Jeff`, `Sarah`, and `Ryan`
 | 
						|
 | 
						|
```js
 | 
						|
assert(
 | 
						|
  'Alan' in users &&
 | 
						|
    'Jeff' in users &&
 | 
						|
    'Sarah' in users &&
 | 
						|
    'Ryan' in users &&
 | 
						|
    Object.keys(users).length === 4
 | 
						|
);
 | 
						|
```
 | 
						|
 | 
						|
The function `isEveryoneHere` should return `true` if `Alan`, `Jeff`, `Sarah`, and `Ryan` are properties on the `users` object
 | 
						|
 | 
						|
```js
 | 
						|
assert(isEveryoneHere(users) === true);
 | 
						|
```
 | 
						|
 | 
						|
The function `isEveryoneHere` should return `false` if `Alan` is not a property on the `users` object
 | 
						|
 | 
						|
```js
 | 
						|
assert(
 | 
						|
  (function () {
 | 
						|
    delete users.Alan;
 | 
						|
    return isEveryoneHere(users);
 | 
						|
  })() === false
 | 
						|
);
 | 
						|
```
 | 
						|
 | 
						|
The function `isEveryoneHere` should return `false` if `Jeff` is not a property on the `users` object
 | 
						|
 | 
						|
```js
 | 
						|
assert(
 | 
						|
  (function () {
 | 
						|
    delete users.Jeff;
 | 
						|
    return isEveryoneHere(users);
 | 
						|
  })() === false
 | 
						|
);
 | 
						|
```
 | 
						|
 | 
						|
The function `isEveryoneHere` should return `false` if `Sarah` is not a property on the `users` object
 | 
						|
 | 
						|
```js
 | 
						|
assert(
 | 
						|
  (function () {
 | 
						|
    delete users.Sarah;
 | 
						|
    return isEveryoneHere(users);
 | 
						|
  })() === false
 | 
						|
);
 | 
						|
```
 | 
						|
 | 
						|
The function `isEveryoneHere` should return `false` if `Ryan` is not a property on the `users` object
 | 
						|
 | 
						|
```js
 | 
						|
assert(
 | 
						|
  (function () {
 | 
						|
    delete users.Ryan;
 | 
						|
    return isEveryoneHere(users);
 | 
						|
  })() === false
 | 
						|
);
 | 
						|
```
 | 
						|
 | 
						|
# --seed--
 | 
						|
 | 
						|
## --seed-contents--
 | 
						|
 | 
						|
```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) {
 | 
						|
  // Only change code below this line
 | 
						|
 | 
						|
  // Only change code above this line
 | 
						|
}
 | 
						|
 | 
						|
console.log(isEveryoneHere(users));
 | 
						|
```
 | 
						|
 | 
						|
# --solutions--
 | 
						|
 | 
						|
```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));
 | 
						|
```
 |