3.5 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 587d7b7d367417b2b2512b1d | Iterieren durch die Schlüssel eines Objekts mit einer for...in-Anweisung | 1 | 301162 | iterate-through-the-keys-of-an-object-with-a-for---in-statement |
--description--
Manchmal musst du alle Schlüssel innerhalb eines Objekts durchlaufen. Du kannst dazu eine for...in-Schleife verwenden. Die for...in-Schleife sieht wie folgt aus:
const refrigerator = {
'milk': 1,
'eggs': 12,
};
for (const food in refrigerator) {
console.log(food, refrigerator[food]);
}
Dieser Code protokolliert milk 1 und eggs 12, wobei jeder Schlüssel-Wert-Paar in einer eigenen Zeile steht.
We defined the variable food in the loop head and this variable was set to each of the object's keys on each iteration, resulting in each food's name being printed to the console.
HINWEIS: Objekte behalten keine Reihenfolge der gespeicherten Schlüssel bei, wie es bei Arrays der Fall ist; daher ist die Position eines Schlüssels auf einem Objekt oder die relative Reihenfolge, in der er erscheint, irrelevant, wenn auf diesen Schlüssel verwiesen oder zugegriffen wird.
--instructions--
Wir haben eine Funktion countOnline definiert, die ein Argument (ein Nutzer-Objekt) allUsers akzeptiert. Use a for...in statement inside this function to loop through the allUsers object and return the number of users whose online property is set to true. Ein Beispiel für ein Objekt, das an countOnline übergeben werden könnte, ist unten abgebildet. Jeder Nutzer wird eine online-Eigenschaft mit entweder einem true oder false-Wert besitzen.
{
Alan: {
online: false
},
Jeff: {
online: true
},
Sarah: {
online: false
}
}
--hints--
Die Funktion countOnline sollte eine for in Anweisung verwenden, um die Objektschlüssel des übergebenen Objekts zu durchlaufen.
assert(
code.match(
/for\s*\(\s*(var|let|const)\s+[a-zA-Z_$]\w*\s+in\s+[a-zA-Z_$]\w*\s*\)/
)
);
Die Funktion countOnline sollte 1 zurückgeben, wenn das Objekt { Alan: { online: false }, Jeff: { online: true }, Sarah: { online: false } } an ihn übergeben wurde
assert(countOnline(usersObj1) === 1);
Die Funktion countOnline sollte 2 zurückgeben, wenn das Objekt { Alan: { online: true }, Jeff: { online: false }, Sarah: { online: true } } an ihn übergeben wurde
assert(countOnline(usersObj2) === 2);
Die Funktion countOnline sollte 0 zurückgeben, wenn das Objekt { Alan: { online: false }, Jeff: { online: false }, Sarah: { online: false } } an ihn übergeben wurde
assert(countOnline(usersObj3) === 0);
--seed--
--after-user-code--
const usersObj1 = {
Alan: {
online: false
},
Jeff: {
online: true
},
Sarah: {
online: false
}
}
const usersObj2 = {
Alan: {
online: true
},
Jeff: {
online: false
},
Sarah: {
online: true
}
}
const usersObj3 = {
Alan: {
online: false
},
Jeff: {
online: false
},
Sarah: {
online: false
}
}
--seed-contents--
const users = {
Alan: {
online: false
},
Jeff: {
online: true
},
Sarah: {
online: false
}
}
function countOnline(allUsers) {
// Only change code below this line
// Only change code above this line
}
console.log(countOnline(users));
--solutions--
function countOnline(allUsers) {
let numOnline = 0;
for(const user in allUsers){
if(allUsers[user].online) {
numOnline++;
}
}
return numOnline;
}