Virhe objektin elementin hakemisessa JavaScriptissä
Oletetaan, että meillä on jokin objekti:
let obj = {
a: 1,
b: 2,
c: 3,
d: 4,
e: 5,
};
Oletetaan, että haluamme saada tästä objektista elementin tietyllä avaimella. Oletetaan, että tämän avaimen nimi syötetään käyttäjältä input-kenttään:
console.log(input.value);
Jotkut aloittelevat ohjelmoijat tekevät seuraavan virheen: he käyvät objektin läpi silmukassa, vertaillen peräkkäin avaimia inputin arvoon, näin:
for (let key in obj) {
if (key === input.value) {
let elem = obj[key];
console.log(elem); // haettu arvo
break;
}
}
Kuitenkin tässä tehtävässä silmukka on täysin tarpeeton. Voimmehan me yksinkertaisesti saada arvomme avaimen perusteella, näin:
let elem = obj[input.value];
Tarvittaessa voidaan lisätä tarkistus, onko objektissa sellaista avainta:
if (obj[input.value] !== undefined) {
let elem = obj[input.value];
console.log(elem);
} else {
console.log('ei sellaista avainta objektissa');
}