Tengo una matriz de usuarios y cada usuario tiene una matriz de etiquetas y tengo una matriz de etiquetas seleccionadas. ¿Cuál es la mejor manera en ES6 de filtrar a los usuarios por etiquetas seleccionadas?
const users = [ { username: "john", tags: [{id:1}, {id:3},{id:5},{id:7}] }, { username: "becky", tags: [{id:1}, {id:7},{id:6}] }, { username: "susy", tags: [{id:1}, {id:4},{id:5}] }, { username: "tyson", tags: [{id:3},{id:5}] }, ];y mis etiquetas seleccionadas son
let tagIds = [7,5];y espero recibir un resultado como
users = [ { username: "john", tags: [{id:1}, {id:3},{id:5},{id:7}] }, ];Filtre a los usuarios y luego verifique que cada id se encuentre en las etiquetas de usuario usando Array.some() :
const users = [{"username":"john","tags":[{"id":1},{"id":3},{"id":5},{"id":7}]},{"username":"becky","tags":[{"id":1},{"id":7},{"id":6}]},{"username":"susy","tags":[{"id":1},{"id":4},{"id":5}]},{"username":"tyson","tags":[{"id":3},{"id":5}]}]; const tagIds = [7,5]; const result = users.filter(({ tags }) => tagIds.every(id => tags.some(t => t.id === id) ) ); console.log(result);