Estoy luchando con mi tarea. Mi tarea es obtener un valor de un elemento de objeto, después de escribir su clave. El problema es una clave, que no existe en el objeto. En este caso, debería mostrarse 'no encontrado'. No tengo ni idea de cómo hacer esto. No sé, si pudiera explicarlo bien, mostraré mi código y el resultado esperado. Espero que lo compruebes.
let object = { a: "hund", b: "katze", c: "maus", d: "elefant", e: "schlange", f: "stachelschwein", g: "affe", h: "giraffe" } function getObjectElements(keys) { let result = []; for (let i = 0; i < keys.length; i++) { for (const objectKey in object) { if (keys[i] === objectKey) { result.push(object[objectKey]) } } } return result; }Si no se siente cómodo con el operador ternario, es decir, ? o el operador coalescente nulo, es decir, ?? (o aún no ha aprendido ninguno de los dos en su curso, y cree que usarlos sería inesperado), una declaración simple de otra rama que agregue "not result" al resultado en el caso de que el objeto no contenga la clave, debería hacer las pruebas pasan:
const object = { a: "hund", b: "katze", c: "maus", d: "elefant", e: "schlange", f: "stachelschwein", g: "affe", h: "giraffe" } function getObjectElements(keys) { const result = []; for (let i = 0; i < keys.length; i++) { const key = keys[i]; if (object.hasOwnProperty(key)) { result.push(object[key]); } else { result.push("not found"); } } return result; } console.log(getObjectElements(['a', 'b', 'z', 'c'])); console.log(getObjectElements(['a', 'a_1', 'a_2', 'a_3', 'b', 'c', 'd']));Para cada clave, tome el valor del object , y si no existe (usando el operador ?? o el operador in con un ternario) use 'not found' en su lugar:
const object = {"a":"hund","b":"katze","c":"maus","d":"elefant","e":"schlange","f":"stachelschwein","g":"affe","h":"giraffe"} function getObjectElements(keys) { const result = []; for (let i = 0; i < keys.length; i++) { const key = keys[i]; result.push(object[key] ?? 'not found'); // or key in object ? object[key] : 'not found' } return result; } const result = getObjectElements(['a', 'b', 'z', 'c']); console.log(result); También puedes acortar el código usando Array.map() :
const object = {"a":"hund","b":"katze","c":"maus","d":"elefant","e":"schlange","f":"stachelschwein","g":"affe","h":"giraffe"} const getObjectElements = keys => keys.map(key => object[key] ?? 'not found'); const result = getObjectElements(['a', 'b', 'z', 'c']); console.log(result);