Tengo una matriz de objetos y quiero hacer un filtro cuando un idioma no existe, use otro. Por ejemplo, cuando estoy buscando el idioma de y no existe, quiero buscar en este caso el idioma en
const arrObj = [ {id: 0, name: 'Zero', lang: 'hu', video: 'Clip'}, {id: 1, name: 'One', lang: 'en', video: 'Clip'}, {id: 2, name: 'Two', lang: 'en', video: 'Clip'}, {id: 3, name: 'Three', lang: 'en', video: 'Trailer'}, {id: 4, name: 'Four', lang: 'hu', video: 'Clip'}, {id: 5, name: 'Five', lang: 'en', video: 'Trailer'}, {id: 6, name: 'Six', lang: 'hu', video: 'Trailer'}, {id: 7, name: 'Seven', lang: 'hu', video: 'Clip'}, ]
const language = 'de'
const item = arrObj.filter(e => { if (e.lang === language && e.video === 'Trailer') { return e.video === 'Trailer' } })
Lo he intentado con la función de búsqueda y con diferentes declaraciones if else también. Estoy realmente atascado con esto ahora. Cualquier ayuda sería apreciada
Esto buscará utilizando todas las palabras clave dadas hasta que una de ellas arroje algún resultado. Si no se encuentra ningún resultado, devuelve una matriz vacía;
let searchTerms = ["de", "be", "en"] const arrObj = [{ id: 0, name: 'Zero', lang: 'hu', video: 'Clip' }, { id: 1, name: 'One', lang: 'en', video: 'Clip' }, { id: 2, name: 'Two', lang: 'en', video: 'Clip' }, { id: 3, name: 'Three', lang: 'en', video: 'Trailer' }, { id: 4, name: 'Four', lang: 'hu', video: 'Clip' }, { id: 5, name: 'Five', lang: 'en', video: 'Trailer' }, { id: 6, name: 'Six', lang: 'hu', video: 'Trailer' }, { id: 7, name: 'Seven', lang: 'hu', video: 'Clip' }, ]; let search = (data, keywords) => { let filteredData = []; for (let j = 0; j < keywords.length; j++) { filteredData = data.filter(x => x.lang === keywords[j]) if (filteredData.length != 0) { return filteredData; } } return filteredData; } console.log(search(arrObj, searchTerms))
Puedes intentar usar el operador lógico o . El lado derecho del operador solo se evaluará cuando no haya un tráiler en de
, ya que find
devuelve indefinido (lo cual es falso) cuando no hay coincidencia:
const arrObj = [ {id: 0, name: 'Zero', lang: 'hu', video: 'Clip'}, {id: 1, name: 'One', lang: 'en', video: 'Clip'}, {id: 2, name: 'Two', lang: 'en', video: 'Clip'}, {id: 3, name: 'Three', lang: 'en', video: 'Trailer'}, {id: 4, name: 'Four', lang: 'hu', video: 'Clip'}, {id: 5, name: 'Five', lang: 'en', video: 'Trailer'}, {id: 6, name: 'Six', lang: 'hu', video: 'Trailer'}, {id: 7, name: 'Seven', lang: 'hu', video: 'Clip'}, ] const language = 'de'; const item = arrObj.find(e => e.video == 'Trailer' && e.lang === language) || arrObj.find(e => e.video == 'Trailer' && e.lang === 'en'); console.log(item);