-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
146 lines (104 loc) · 3.6 KB
/
app.js
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*
01
- Implemente um código assíncrono entre os console.log() abaixo.
*/
console.log('Linha 1')
console.log('Linha 2')
setTimeout(() => console.log('linha 9'), 2000)
console.log('Linha 3')
console.log('Linha 4')
setTimeout(() => console.log('linha 10'), 2000)
console.log('Linha 5')
console.log('Linha 6')
console.log('Linha 7')
console.log('Linha 8')
/*
02
- Descomente o código abaixo e crie a função que fará a string dentro da
"logGreeting" ser exibida no console.
*/
function logGreeting (name) {
console.log(`olá, ${name}`)
}
logGreeting('wallace')
/*
03
- O código abaixo possui uma parte que pode ser isolada. Isole-a.
*/
const lesserThanFive = [3, 4, 10, 20].filter(n => n < 5)
console.log(lesserThanFive)
/*
04
- Refatore o código abaixo.
*/
const prices = [12, 19, 7, 209]
totalPrice = prices.reduce((acc, suc) => acc + suc, 0)
console.log(`Preço total: ${totalPrice}`)
/*
05
- Abaixo da declaração do objeto "car", modifique a cor do carro para 'azul';
- Não insira `car.color = azul`.
*/
let car = { color: 'amarelo' }
car["color"] = 'azul'
console.log(car.color)
/*
06
- Crie uma função que recebe 3 argumentos;
- Se um dos 3 argumentos não for passado na invocação, a string 'A função
deve ser invocada com 3 argumentos' deve ser retornada;
- Se todos os argumentos forem passados, retorne a string 'A função foi
invocada com 3 argumentos'.
*/
function verifyParams(p1, p2, p3) {
const params = arguments.callee.length
const args = arguments.length
if (params === args) {
return 'A funcao foi invocada com 3 argumentos'
}
return 'A funcao deve ser invodada com pelo menos 3 argumentos'
}
console.log(verifyParams(1,2,3))
/*
07
- O objeto abaixo representa uma caixa de livros com espaço para 5 livros e
que, no momento em que foi declarado, possui nenhum livro dentro;
- Crie um método que irá adicionar livros na caixa;
Este método deve:
- Receber por parâmetro o número de livros que serão colocados na caixa.
Esse número não precisa encher a caixa de uma só vez, os livros podem
ser acrescentados aos poucos;
- Retornar a frase: "Já há 'X' livros na caixa";
- Se a caixa já estiver cheia, com todos os espaços já preenchidos, o
método deve retornar a frase: "A caixa já está cheia";
- Se ainda houverem espaços na caixa mas a quantidade de livros passada por
parâmetro for ultrapassar o limite de espaços da caixa, mostre quantos
espaços ainda podem ser ocupados, com a frase: "Só cabem mais
QUANTIDADE_DE_LIVROS_QUE_CABEM livros";
- Se couber somente mais um livro, mostre a palavra "livro" (no singular)
na frase acima.
*/
let booksBox = {
spaces: 5,
booksIn: 0,
addBooks (num) {
const sleep = ms => new Promise( res => setTimeout(res, ms) )
const demo = async () => {
let numBooksToAdd = num;
if (numBooksToAdd > this.spaces) return console.log('O numero de livros excede o numero de espaços na prateleira')
while (numBooksToAdd <= this.spaces) {
this.booksIn++
numBooksToAdd--
console.log(`Já há ${this.booksIn} livros na caixa`)
const oneBookRest = !numBooksToAdd && this.booksIn === 4
const fullShelf = this.booksIn === this.spaces
if (oneBookRest) return console.log('So cabe mais um livro na prateleira')
if (fullShelf) return console.log(`A prateleira esta cheia!`)
if (!numBooksToAdd) return console.log(`So cabem mais ${this.spaces - this.booksIn} livros`)
await sleep(1000);
}
}
demo()
}
}
booksBox.addBooks(3)