DEV Community

Cristian Fernando
Cristian Fernando

Posted on • Edited on

Advent.js🎅🏼| #1: Contando ovejas para dormir.

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'}
]
Enter fullscreen mode Exit fullscreen mode

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' }]

Enter fullscreen mode Exit fullscreen mode

Completa el reto!


Mi solución:


Puedes seguir a @midudev y estar pendiente de los retos de Advent.js

Top comments (13)

Collapse
 
alexjamesmx profile image
Alejandro Santiago

Asi perros jijija

return ovejas.filter(oveja => oveja.name.toLowerCase().includes('n') && oveja.name.toLowerCase().includes('a') && oveja.color === 'rojo'
)

Collapse
 
jgilces profile image
jgilces

Mi solución:

function contarOvejas(ovejas) {

  const ovejitas = ovejas.filter((el)=>{
      return (el.color==='rojo' && el.name.toLowerCase().includes('n') && el.name.toLowerCase().includes('a'));
  });

  return ovejitas;
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
duxtech profile image
Cristian Fernando

nice! ojo que este año midu hará otro advent js

Collapse
 
s3iken profile image
s3iken

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'))

}

Collapse
 
duxtech profile image
Cristian Fernando

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!

Collapse
 
mendozalz profile image
Lenin Mendoza

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
}

Collapse
 
duxtech profile image
Cristian Fernando

es una respuesta valida

Collapse
 
kylety1990 profile image
kylety1990

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)

Collapse
 
marquimark profile image
Marquimark

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));

Collapse
 
duxtech profile image
Cristian Fernando

Esta chula esa solución, intentaste el reto 3? esta para pensar un poco más

Collapse
 
mendozalz profile image
Lenin Mendoza

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

}, {});
}
`

Collapse
 
jcodev2 profile image
Jeancarlo Morales

Mi solución es esta:
const ovejasRojo = ovejas.filter((oveja) => oveja.color === 'rojo' && oveja.name.includes('${('n' || 'N') && ('a' || 'A')}'));

Collapse
 
error404js profile image
IveMery

dejo mi solucion

function contarOvejas(ovejas) {
return ovejas.filter((oveja) => oveja.color === 'rojo' && oveja.name.indexOf("Na") !== -1)
}