Tengo un problema de matriz simple: tengo dos matrices diferentes: una con cadenas y otra con objetos. Necesito verificar uno contra el otro de cierta manera: la matriz de objetos debe verificar si una propiedad del objeto está incluida en la matriz de cadenas y devolver una respuesta en cada caso.
const colors = ["blue", "pink", "red", "green", "yellow", "orange", "white"] const objColors = [{name:"pink", value: true}, {name:"green", value: true}, {name: "white", value: false}]Mi matriz de respuesta esperada sería algo como:
const res = [false, true, false, true, false, false, false]No sé cómo abordar esto, ya que he intentado varias cosas sin éxito. Intenté iteraciones dobles, pero me dio una respuesta incorrecta. También probé el método include, pero solo puedo verificar mi matriz objColors, por lo tanto, no obtengo una respuesta para todos los casos que necesito verificar
let res = objects.map(x => (strings.includes(x.name)))¿Podría alguien darme una pista sobre cómo verificarlos para obtener la respuesta deseada? Gracias por adelantado
Primero, convierta la matriz de objetos en una estructura que sea más fácil de verificar, tal vez un mapa o un conjunto de valores que son verdaderos. Luego puede mapear la matriz de colores y buscar el valor asociado.
const colors = ["blue", "pink", "red", "green", "yellow", "orange", "white"]; const objColors = [{name:"pink", value: true}, {name:"green", value: true}, {name: "white", value: false}]; const trueColors = new Set( objColors .filter(({ value }) => value) .map(({ name }) => name) ); const res = colors.map(color => trueColors.has(color)); console.log(res);Un acercamiento con un objeto.
const colors = ["blue", "pink", "red", "green", "yellow", "orange", "white"], objColors = [{ name: "pink", value: true }, { name: "green", value: true }, { name: "white", value: false }], wanted = Object.fromEntries(objColors.map(({ name, value }) => [name, value])), result = colors.map(c => !!wanted[c]); console.log(result);