1.Aquí está la tarea.
Declare a function removeOddValues.2. Tu código aquí.
function removeOddValues(obj){ let result = {}; for(const key in obj){ if(typeof obj[key] % 2 === 0){ result[key] = obj[key]; return result; } else if(!isNaN(obj[key])) return obj; } }3. Aquí está la prueba.
test(removeOddValues({ a: 1, b: 2, c: 3 }), { b: 2 }); test(removeOddValues({ a: "1", b: "2", c: "3" }), { a: "1", b: "2", c: "3", }); // If a line gets really long, you can put key/value pairs on new lines.4. Aquí está el error.
Pero se supone que la salida es {b:2} y {a: "1", b: "2", c: "3"}, no ambos son {a: "1", b: "2", c: "3" }
Creo que tu problema está en el if check. Está verificando si el valor de typeof es divisible por 2, devolverá NaN ya que typeof obj[key] está devolviendo una cadena o número y el módulo de eso será NaN. Su condición en else if pasa, por lo que se devuelve todo el objeto.
Aquí hay una forma más funcional de hacer lo mismo:
function removeOddValues(o){ return Object.entries(o) .reduce((a,[k,v])=>{ if (typeof v==="string" || v%2===0) a[k]=v; return a; }, {}); } console.log(removeOddValues({ a: 1, b: 2, c: 3 })); console.log(removeOddValues({ a: "1", b: "2", c: "3" }));