Contando ovejas para dormir
Considera una lista/array de ovejas. Cada oveja tiene un nombre y un color. Haz una función que devuelva una lista con todas las ovejas que sean de color rojo y que además su nombre contenga tanto las letras n Y a, sin importar el orden, las mayúsculas o espacios.
Por ejemplo, si tenemos las ovejas:
const ovejas = [
{ name: 'Noa', color: 'azul' },
{ name: 'Euge', color: 'rojo' },
{ name: 'Navidad', color: 'rojo' },
{ name: 'Ki Na Ma', color: 'rojo'}
]
Al ejecutar el método debería devolver lo siguiente:
const ovejasFiltradas = contarOvejas(ovejas)
console.log(ovejasFiltradas)
// [{ name: 'Navidad', color: 'rojo' },
// { name: 'Ki Na Ma', color: 'rojo' }]
Completa el reto!
Mi solución:
Puedes seguir a @midudev y estar pendiente de los retos de Advent.js
Oldest comments (13)
Esta es mi forma un poco más corta, por si te interesa :)
function contarOvejas(ovejas) {
return ovejas.filter(o => o.name.toLowerCase().includes('a' && 'n') && ovejas.filter(o => o.color === 'rojo'))
}
Está chula esa solución! No sabía que podías usar un and lógico dentro de un includes. Cada día se aprende algo nuevo! Gracias por compartir tu respuesta!
Esta es mi solucion al reto 2, espero sus comentarios, gracias.
const ovejas = [
{ name: 'Noya', color: 'rojo' },
{ name: 'Euynge', color: 'azul' },
{ name: 'Navyidad', color: 'rojo' },
{ name: 'Ki Na Ma', color: 'verde' },
{ name: 'Max', color: 'blanco'},
{ name: 'Maxin', color: 'rojo'}
]
validaOvejaColorNombre = (ovejas) => {
let ovejasN = '';
let valida = '';
return resultado = ovejas.filter(( oveja) => {
ovejasN = oveja.name.toLowerCase().trim();
valida = ovejasN.includes('n') && ovejasN.includes('a');
return oveja.color === 'rojo' && valida
})
}
console.log(validaOvejaColorNombre(ovejas));
Esta chula esa solución, intentaste el reto 3? esta para pensar un poco más
Mi solución es esta:
const ovejasRojo = ovejas.filter((oveja) => oveja.color === 'rojo' && oveja.name.includes('${('n' || 'N') && ('a' || 'A')}'));
Mi solución:
const ovejas = [
{name: 'Pepa', necklace:'rojo'},
{name:'Dani', necklace:'rojo'},
{name: 'Juanjo', necklace:'azul'},
{name: 'Rudolf jaja', necklace: 'rojo' }
]
const redNecklace = ovejas.filter(({necklace, name})=> (name.toLowerCase().includes('n' && 'e')) && necklace==='rojo')
console.log(redNecklace)
dejo mi solucion
function contarOvejas(ovejas) {
return ovejas.filter((oveja) => oveja.color === 'rojo' && oveja.name.indexOf("Na") !== -1)
}
Mi solución:
nice! ojo que este año midu hará otro advent js
el mio no fue el mejor algoritmo pero por lo menos lo soluciones por mi cuenta
const ovejas = [
{ name: 'Noa', color: 'azul' },
{ name: 'Euge', color: 'rojo' },
{ name: 'Navidad', color: 'rojo' },
{ name: 'Ki Na Ma', color: 'rojo'},
{ name: 'AAAAAaaaaa', color: 'rojo' },
{ name: 'Nnnnnnnn', color: 'rojo'}
]
export default function contarOvejas(ovejas) {
ovejas = ovejas.filter((oveja)=>{
const N = 'N';
const a = 'a';
if (oveja.name.includes(a) && oveja.name.includes(N) && oveja.color.includes('rojo')){
return oveja.name && oveja.color
}else{
"No cumple"
}
});
return ovejas
}
es una respuesta valida
Necesito ayuda para poder avanzar pues no me siento cómodo al lograr ver sus soluciones sin lograr entender el por que y de donde se saco la siguiente solución pues no sabia que podíamos utilizar de esta manera reduce (Alguien puede explicarmelo por favor?)
` .reduce((contador, regalo) => {
// De donde sale que podemos utilizar reduce de esta manera?
contador[regalo] = (contador[regalo] || 0) + 1;
return contador
}, {});
}
`
Asi perros jijija
return ovejas.filter(oveja => oveja.name.toLowerCase().includes('n') && oveja.name.toLowerCase().includes('a') && oveja.color === 'rojo'
)