DEV Community

Cristian Fernando
Cristian Fernando

Posted 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

Discussion (7)

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 Author

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
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 Author

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

Collapse
jcodemarker profile image
JCode-marker

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