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
Latest comments (13)
Asi perros jijija
return ovejas.filter(oveja => oveja.name.toLowerCase().includes('n') && oveja.name.toLowerCase().includes('a') && oveja.color === 'rojo'
)
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
}, {});
}
`
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
Mi solución:
nice! ojo que este año midu hará otro advent js
dejo mi solucion
function contarOvejas(ovejas) {
return ovejas.filter((oveja) => oveja.color === 'rojo' && oveja.name.indexOf("Na") !== -1)
}
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)
Mi solución es esta:
const ovejasRojo = ovejas.filter((oveja) => oveja.color === 'rojo' && oveja.name.includes('${('n' || 'N') && ('a' || 'A')}'));
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
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!