Skip to content

Commit 890c6fb

Browse files
committed
✨ challenge-01 solution added
1 parent 7278493 commit 890c6fb

File tree

3 files changed

+78
-0
lines changed

3 files changed

+78
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Reto 1: Contando ovejas para dormir
2+
3+
## Problema
4+
5+
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.
6+
7+
Por ejemplo, si tenemos las ovejas:
8+
9+
```js
10+
const ovejas = [
11+
{ name: "Noa", color: "azul" },
12+
{ name: "Euge", color: "rojo" },
13+
{ name: "Navidad", color: "rojo" },
14+
{ name: "Ki Na Ma", color: "rojo" },
15+
{ name: "AAAAAaaaaa", color: "rojo" },
16+
{ name: "Nnnnnnnn", color: "rojo" },
17+
];
18+
```
19+
20+
Al ejecutar el método debería devolver lo siguiente:
21+
22+
```js
23+
const ovejasFiltradas = contarOvejas(ovejas);
24+
25+
console.log(ovejasFiltradas);
26+
27+
// [{ name: 'Navidad', color: 'rojo' },
28+
// { name: 'Ki Na Ma', color: 'rojo' }]
29+
```
30+
31+
Recuerda. **Debe contener las dos letras 'a' y 'n' en el nombre.** No cuentes ovejas que sólo tenga una de las letras, debe tener ambas.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const contarOvejas = (ovejas) => ovejas
2+
.filter(
3+
(oveja) => oveja.color === 'rojo'
4+
&& oveja.name.match(/[aA]/)
5+
&& oveja.name.match(/[nN]/),
6+
);
7+
8+
module.exports = contarOvejas;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
const contarOvejas = require('./index');
2+
3+
describe('01 => Contando ovejas para dormir', () => {
4+
const testCases = [
5+
{
6+
input: [
7+
{ name: 'Noa', color: 'azul' },
8+
{ name: 'Euge', color: 'rojo' },
9+
{ name: 'Navidad', color: 'rojo' },
10+
{ name: 'Ki Na Ma', color: 'rojo' },
11+
{ name: 'AAAAAaaaaa', color: 'rojo' },
12+
{ name: 'Nnnnnnnn', color: 'rojo' },
13+
],
14+
output: [
15+
{ name: 'Navidad', color: 'rojo' },
16+
{ name: 'Ki Na Ma', color: 'rojo' },
17+
],
18+
},
19+
{
20+
input: [
21+
{ name: 'Noa', color: 'rojo' },
22+
{ name: 'Euge', color: 'rojo' },
23+
{ name: 'Navidad', color: 'rojo' },
24+
],
25+
output: [
26+
{ name: 'Noa', color: 'rojo' },
27+
{ name: 'Navidad', color: 'rojo' },
28+
],
29+
},
30+
];
31+
32+
it('should return an array type', () => {
33+
expect(contarOvejas([])).toBeInstanceOf(Array);
34+
});
35+
36+
it.each(testCases)('should return a correct array', (testCase) => {
37+
expect(contarOvejas(testCase.input)).toEqual(testCase.output);
38+
});
39+
});

0 commit comments

Comments
 (0)