-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReto #15.js
More file actions
79 lines (63 loc) · 2.05 KB
/
Reto #15.js
File metadata and controls
79 lines (63 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/**
* Reto #15: ✏️ Dibujando tablas
*
* Al Polo Norte ha llegado ChatGPT y el elfo Sam Elfman está trabajando en una aplicación de administración de regalos y niños.
Para mejorar la presentación, quiere crear una función drawTable que reciba un array de objetos y lo convierta en una tabla de texto.
La tabla dibujada debe tener:
Cabecera con letras de columna (A, B, C…).
El contenido de la tabla son los valores de los objetos.
Los valores deben estar alineados a la izquierda.
Los campos dejan siempre un espacio a la izquierda.
Los campos dejan a la derecha el espacio necesario para alinear la caja.
La función recibe un segundo parámetro sortBy que indica el nombre del campo por el que se deben ordenar las filas. El orden será alfabético ascendente si los valores son strings y numérico ascendente si son números.
Mira el ejemplo para ver cómo debes dibujar la tabla:
*/
console.log(drawTable(
[
{ name: 'Charlie', city: 'New York' },
{ name: 'Alice', city: 'London' },
{ name: 'Bob', city: 'Paris' }
],
'name'
));
// +---------+----------+
// | A | B |
// +---------+----------+
// | Alice | London |
// | Bob | Paris |
// | Charlie | New York |
// +---------+----------+
console.log(drawTable(
[
{ gift: 'Book', quantity: 5 },
{ gift: 'Music CD', quantity: 1 },
{ gift: 'Doll', quantity: 10 }
],
'quantity'
));
// +----------+----+
// | A | B |
// +----------+----+
// | Music CD | 1 |
// | Book | 5 |
// | Doll | 10 |
// +----------+----+
/**
* @param {Array<Object>} data - The data to draw the table
* @param {string} sortBy - The field to sort the table
* @returns {string}
*/
function drawTable(data, sortBy) {
if(data.length!==0){
if(typeof data[0][sortBy] === 'number')
data.sort((a,b)=> a[sortBy]-b[sortBy]);
else
data.sort((a,b)=>a[sortBy].localeCompare(b[sortBy]));
const cols = Object.keys(data[0]);
console.log(data); //Debug
let table = '';
let tableWidth = 0;
return table;
}
return ''
}