Digamos que tengo las dos matrices siguientes. El objetivo aquí es filtrar la matriz de "alimentos" con los valores de "tagsValues". Quiero devolver una nueva matriz de alimentos, donde las etiquetas de alimentos incluyen uno o varios elementos de valores de etiquetas.
const tagsValues = ['gluten-free', 'carb-free', 'flavor-free']; const foods = [ { name: 'pasta', tags: ['delicious', 'has carbs']}, { name: 'gluten-free-pizza', tags: ['gluten-free']}, { name: 'soda', tags: ['delicious', 'has sugars']}, { name: 'pizza', tags: ['delicious', 'best meal of the year','carb-free']}, { name: 'rice cakes', tags: ['flavor-free','carb-free']} ]En este ejemplo, necesito obtener el siguiente resultado:
result = [ { name: 'gluten-free-pizza', tags: ['gluten-free']}, { name: 'pizza', tags: ['delicious', 'best meal of the year','carb-free']}, { name: 'rice cakes', tags: ['flavor-free','carb-free']} ]Hasta ahora he probado lo siguiente. Parece funcionar solo si solo hay un valor en las etiquetas de alimentos y eso es un problema ya que la mayoría de las etiquetas de alimentos tendrán varios elementos.
result= foods.filter(obj => { return ( [...obj.tags].some(item => tagsValues.includes(item)) )})