Todavía estoy aprendiendo los conceptos básicos de map (), filter (), forEach () e include () y parece que no puedo encontrar la mejor manera o la forma de intentar esto ...
Digamos que tengo un arr y un obj y necesito devolver los valores del objeto si la clave del objeto está en la matriz
matriz const = [1, 2, 3];
objeto const = { 1: "azul", 2: "rojo", 3: "verde", 4: "naranja", 5: "púrpura" };
Creo que porque voy a buscar una nueva matriz, necesito usar map()
Puede usar Object.entries(object) para obtener una matriz de pares de valores clave del objeto, luego filtrar de acuerdo con los elementos de la matriz, finalmente mapear y devolver solo los valores:
const array = [1, 2, 3]; const object = { 1: "blue", 2: "red", 3: "green", 4: "orange", 5: "purple" }; const result = Object.entries(object).filter(el=>array.includes(parseInt(el[0]))).map(el=>el[1]) console.log(result) O si desea mantener el orden de los elementos (gracias a ASDFGerte), simplemente mapee sobre la array y devuelva el valor del elemento.
const array = [3,2,1]; const object = { 1: "blue", 2: "red", 3: "green", 4: "orange", 5: "purple" }; const result = array.map(el => object[el]); console.log(result)Solo devolveremos valores con claves que están presentes en la matriz. Entonces, simplemente puede recorrer los valores de la matriz y verificar si hay un valor en el objeto con el valor de la matriz como clave. Como desea que devuelva los valores de la llamada en sí, tal vez podamos usar reduce:
let values = array.reduce((found, item) => { return (item in object) ? found.push(object[item]) && found : found }, []) console.log(values)