Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

92
Views
Hacer coincidir una matriz completa con parte de otra en React

Actualmente estoy escribiendo una aplicación que permite a los usuarios marcar casillas y ayudarlos a decidir qué bebidas preparar con los ingredientes que tengan. Por el momento, lo tengo configurado para que el usuario pueda revisar una lista de ingredientes y marcar cuáles tiene. Luego, después de presionar enviar, la aplicación revisará todos los ingredientes de todas las bebidas, y si una receta de bebida contiene todos los ingredientes que tiene el usuario, devolverá esa bebida.

El problema es que quiero que el usuario pueda poner varios ingredientes, pero que la aplicación no solo devuelva la receta si tiene TODOS los ingredientes. Ejemplo: el usuario ingresa que tienen vodka, ron y limas, quiero que la aplicación devuelva las recetas que requieren (Vokda, limas), (Ron, Limas), (Ron, Vodka), (Ron, Vodka, Limas) , (ron), (limas), (vodka).

Esto es lo que tengo hasta ahora.

 import React from 'react'; import Data from '../Data' function HavedRecipeCards(props) { let totalDrinks = Data.drinks let havedIngredients = props.selectedIngredients // havedIngredients is represented with a normal array // Ex: ['vermouth', 'limes'] let checkRecipes = () => { if (havedIngredients.length > 0) { for (let i = 0; i < totalDrinks.length; i++ ) { let drinkIng = totalDrinks[i].ingredients for (let p = 0; p <= havedIngredients.length; p++) { for (let o = 0; o < drinkIng.length; o ++) { if (havedIngredients[p] == drinkIng[o]) { } } } } } } return ( <div> <input type="submit" value="Submit" onClick={checkRecipes}/> </div> ) } export default HavedRecipeCards;

Siento que hay una mejor manera de hacer esto sin recorrer la totalidad de la lista de bebidas, la lista de ingredientes de bebidas y la lista de ingredientes consumidos. Cualquier ayuda se agradece, gracias.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puedes filter el total de bebidas por aquellas en las que cada ingrediente forma parte de havedIngredients .

 const totalDrinks = [['Vodka','Limes'], ['Rum','Limes'], ['Vodka', 'Rum','Limes'], ['Vodka','Vermouth']]; const havedIngredients = ['Vodka', 'Rum', 'Limes']; const possibleDrinks = totalDrinks.filter(ingredients => ingredients.every(ingredient => havedIngredients.includes(ingredient)) ); alert(possibleDrinks.join("\n"));

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!