¿Cuál es la mejor manera de devolver elementos en una matriz de objetos si contienen una determinada propiedad en una propiedad que es una matriz?
Tengo la siguiente matriz de objetos:
const menus = [ { id: 1, title: 'English', locations: ['MENU', 'MENU_EN'] }, { id: 2, title: 'Spanish', locations: ['MENU', 'MENU_SP'] }, { id: 3, title: 'German', locations: ['MENU', 'MENU_DE'] }, { id: 4, title: 'German and english', locations: ['MENU', 'MENU_EN', 'MENU_DE'] }, ]Como ejemplo, estoy buscando una forma de devolver cualquier elemento que tenga 'MENU_EN' en la propiedad de ubicaciones. Así que necesito una función que devuelva lo siguiente:
const filteredMenus = [ { id: 1, title: 'English', locations: ['MENU', 'MENU_EN'] }, { id: 4, title: 'German and english', locations: ['MENU', 'MENU_EN', 'MENU_DE'] }, ]Puede filtrar la matriz de menus usando Array.prototype.filter() verificando si la propiedad de ubicaciones incluye el MENU_EN deseado con Array.prototype.includes() :
Código:
const menus = [{id: 1,title: 'English',locations: ['MENU', 'MENU_EN']},{id: 2,title: 'Spanish',locations: ['MENU', 'MENU_SP']},{id: 3,title: 'German',locations: ['MENU', 'MENU_DE']},{id: 4,title: 'German and english',locations: ['MENU', 'MENU_EN', 'MENU_DE']},] const filteredMenus = menus.filter(({ locations }) => locations.includes('MENU_EN')) console.log(filteredMenus)