Tengo esta matriz y estos valores:
const levels = [ { name: 'first level primary school' }, { name: 'second level primary school' }, { name: 'first level secondary school' } ] const isPrimarySchool = false const isSecondarySchool = falseY quiero iterar la matriz y encontrar si hay una cadena con la palabra 'primaria' o 'secundaria' y convertir el valor de isPrimarySchool o isSecondarySchool en verdadero.
El método que encontré para resolver esto, es este:
levels.forEach(level => { if ( level.name.toLowerCase().includes('primary') ) { isPrimarySchool = true } if ( level.name.toLowerCase().includes('secondary') ) { this.isSecondarySchool = true } })¿Hay una mejor manera de resolver esto, usando lodash o javascript normal?
Podría tomar una función para usar con Array#some y entregar el valor esperado.
const has = string => o => o.name.includes(string), levels = [{ name: 'first level primary school' }, { name: 'second level primary school' }, { name: 'first level secondary school' }], isPrimarySchool = levels.some(has('primary')), isSecondarySchool = levels.some(has('second')) console.log(isPrimarySchool); console.log(isSecondarySchool);Quiero iterar la matriz y encontrar si hay una cadena con la palabra 'primaria' o 'secundaria' y convertir el valor de isPrimarySchool o isSecondarySchool en verdadero.
const levels = [ { name: 'first level primary school' }, { name: 'second level primary school' }, { name: 'first level secondary school' } ] const isPrimarySchool = levels.some(x=>x.name.toLowerCase().includes('primary')) const isSecondarySchool = levels.some(x=>x.name.toLowerCase().includes('secondary')) console.log({isPrimarySchool,isSecondarySchool})Puede usar la función Array.some() incorporada y algunas expresiones regulares:
isPrimarySchool = levels.some(level => /primary/.exec(level.name)); isSecondarySchool = levels.some(level => /secondary/.exec(level.name));