Files
freeCodeCamp/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property.md

162 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: 587d7b7d367417b2b2512b1c
title: 检查对象是否具有某个属性
challengeType: 1
forumTopicId: 301155
dashedName: check-if-an-object-has-a-property
---
# --description--
我们已经学习了如何添加、修改和移除对象中的属性。 但如果我们想知道一个对象中是否包含某个属性呢? JavaScript 为我们提供了两种不同的方式来实现这个功能: 一个是通过 `hasOwnProperty()` 方法,另一个是使用 `in` 关键字。 假如我们有一个 `users` 对象,为检查它是否含有 `Alan` 属性,可以这样写:
```js
users.hasOwnProperty('Alan');
'Alan' in users;
```
这两者结果都应该为 `true`
# --instructions--
请完善这个函数,如果传递给它的对象包含四个名字 `Alan``Jeff``Sarah``Ryan`,函数返回 true否则返回 false。
# --hints--
不应直接访问 `users` 对象。
```js
assert(code.match(/users/gm).length <= 2)
```
`users` 对象应该只包含 `Alan`、`Jeff`、`Sarah`、`Ryan` 4 个键。
```js
assert(
'Alan' in users &&
'Jeff' in users &&
'Sarah' in users &&
'Ryan' in users &&
Object.keys(users).length === 4
);
```
如果 `Alan`、`Jeff`、`Sarah`、`Ryan` 是传递给函数 `isEveryoneHere` 对象的属性,则函数应返回 `true`。
```js
assert(isEveryoneHere(users) === true);
```
如果传递给函数 `isEveryoneHere` 对象的属性中不包含 `Alan`,则函数返回 `false`。
```js
assert(
(function () {
delete users.Alan;
return isEveryoneHere(users);
})() === false
);
```
如果传递给函数 `isEveryoneHere` 对象的属性中不包含 `Jeff`,则函数返回 `false`。
```js
assert(
(function () {
delete users.Jeff;
return isEveryoneHere(users);
})() === false
);
```
如果传递给函数 `isEveryoneHere` 对象的属性中不包含 `Sarah`,则函数返回 `false`。
```js
assert(
(function () {
delete users.Sarah;
return isEveryoneHere(users);
})() === false
);
```
如果传递给函数 `isEveryoneHere` 对象的属性中不包含 `Ryan`,则函数返回 `false`。
```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(userObj) {
// 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(userObj) {
return [
'Alan',
'Jeff',
'Sarah',
'Ryan'
].every(user => userObj.hasOwnProperty(user));
}
console.log(isEveryoneHere(users));
```