Created
August 26, 2020 19:24
-
-
Save programadorabordo/ab05e954dc5fcfefa69b8912f6deb9d0 to your computer and use it in GitHub Desktop.
Código criado durante a aula sobre código previsível https://youtu.be/a6TEbMTz5no
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Código previsível | JS Day | Programador a Bordo</title> | |
</head> | |
<body> | |
<script> | |
// every | |
const usuarioRespostas = { | |
nome: 'Ayrton', | |
respostas: [ | |
{ questao_id: '001', acertou: false }, | |
{ questao_id: '002', acertou: false }, | |
{ questao_id: '003', acertou: true }, | |
{ questao_id: '004', acertou: false }, | |
{ questao_id: '005', acertou: false }, | |
] | |
}; | |
let acertouTodas = true; | |
for (let i = 0; i < usuarioRespostas.respostas.length; i++) { | |
if (!usuarioRespostas.respostas[i].acertou) { | |
acertouTodas = false; | |
break; | |
} | |
} | |
console.group('every'); | |
console.log('acertouTodas com for', acertouTodas); | |
const acertouTodasComEvery = usuarioRespostas.respostas.every(function(valorResposta) { | |
return valorResposta.acertou; | |
}); | |
console.log('acertouTodasComEvery', acertouTodasComEvery) | |
console.groupEnd('every'); | |
// some | |
console.group('some'); | |
const acertouTodasComSome = usuarioRespostas.respostas.some(function(valorResposta) { | |
return valorResposta.acertou; | |
}); | |
console.log('acertouTodasComSome', acertouTodasComSome) | |
console.groupEnd('some'); | |
// flat | |
const usuariosRespostas = [ | |
{ | |
nome: 'Ayrton', | |
respostas: [ | |
{ questao_id: '001', acertou: false }, | |
{ questao_id: '002', acertou: true }, | |
{ questao_id: '003', acertou: false }, | |
{ questao_id: '004', acertou: true }, | |
{ questao_id: '005', acertou: true }, | |
] | |
}, | |
{ | |
nome: 'Joaquim', | |
respostas: [ | |
{ questao_id: '001', acertou: true }, | |
{ questao_id: '002', acertou: true }, | |
{ questao_id: '003', acertou: false }, | |
{ questao_id: '004', acertou: true }, | |
{ questao_id: '005', acertou: true }, | |
] | |
}, | |
{ | |
nome: 'Maria', | |
respostas: [ | |
{ questao_id: '001', acertou: true }, | |
{ questao_id: '002', acertou: true }, | |
{ questao_id: '003', acertou: true }, | |
{ questao_id: '004', acertou: true }, | |
{ questao_id: '005', acertou: true }, | |
] | |
}, | |
{ | |
nome: 'Antonia', | |
respostas: [ | |
{ questao_id: '001', acertou: false }, | |
{ questao_id: '002', acertou: false }, | |
{ questao_id: '003', acertou: false }, | |
{ questao_id: '004', acertou: true }, | |
{ questao_id: '005', acertou: false }, | |
] | |
} | |
]; | |
const todasRespostas = usuariosRespostas.map(function(usuario) { | |
return usuario.respostas; | |
}); | |
console.group('flat'); | |
console.log('todasRespostas', todasRespostas); | |
console.log('todasRespostasComFlat', todasRespostas.flat()); | |
const novoArrayNivel2 = [ | |
[ | |
[1, 4], | |
[40, 33], | |
[99, 6] | |
], | |
[ | |
[12, 92], | |
[87, 94] | |
] | |
]; | |
console.log(novoArrayNivel2.flat(2)) | |
console.groupEnd('flat'); | |
// flatMap | |
console.group('flatMap'); | |
const todasRespostasComFlatMap = usuariosRespostas.flatMap(function(usuario) { | |
return usuario.respostas; | |
}); | |
console.log('todasRespostasComFlatMap', todasRespostasComFlatMap); | |
console.groupEnd('flatMap'); | |
// entries e fromEntries | |
console.group('entries e fromEntries'); | |
const usuario = { | |
nome: 'ayrton', | |
sobrenome: 'teshima' | |
}; | |
/* | |
[ | |
['nome', 'ayrton'], | |
['sobrenome', 'teshima'], | |
['idade', 28] | |
] | |
*/ | |
console.log('entries primeiroExemplo', Object.entries(usuario)) | |
console.log( | |
Object.fromEntries([ | |
['cidade', 'Rio de JAneiro'], | |
['signo', 'Aquário'] | |
]) | |
) | |
const invertido = Object.fromEntries( | |
Object.entries(usuario).map(function(u) { | |
return [ | |
u[1], | |
u[0] | |
] | |
}) | |
) | |
console.log('invertido', invertido); | |
const usuarios = [ | |
{ | |
id: '001', | |
nome: 'Ayrton', | |
idade: 28, | |
email: '[email protected]', | |
foto: 'https://via.placeholder.com/300/200?id=1', | |
sexo: 'M', | |
estado: 'RJ', | |
}, | |
{ | |
id: '002', | |
nome: 'João', | |
idade: 33, | |
email: '[email protected]', | |
foto: 'https://via.placeholder.com/300/200?id=2', | |
sexo: 'M', | |
estado: 'PE', | |
}, | |
{ | |
id: '003', | |
nome: 'Maria', | |
idade: 25, | |
email: '[email protected]', | |
foto: 'https://via.placeholder.com/300/200?id=3', | |
sexo: 'F', | |
estado: 'RJ', | |
}, | |
{ | |
id: '004', | |
nome: 'Eduardo', | |
idade: 20, | |
email: '[email protected]', | |
foto: 'https://via.placeholder.com/300/200?id=4', | |
sexo: 'M', | |
estado: 'RS', | |
}, | |
{ | |
id: '005', | |
nome: 'Antônia', | |
idade: 30, | |
email: '[email protected]', | |
foto: 'https://via.placeholder.com/300/200?id=5', | |
sexo: 'F', | |
estado: 'RJ', | |
}, | |
{ | |
id: '006', | |
nome: 'Joaquina', | |
idade: 35, | |
email: '[email protected]', | |
foto: 'https://via.placeholder.com/300/200?id=6', | |
sexo: 'F', | |
estado: 'TO', | |
}, | |
{ | |
id: '007', | |
nome: 'Mateus', | |
idade: 42, | |
email: '[email protected]', | |
foto: 'https://via.placeholder.com/300/200?id=7', | |
sexo: 'M', | |
estado: 'MG', | |
}, | |
{ | |
id: '008', | |
nome: 'Davi', | |
idade: 19, | |
email: '[email protected]', | |
foto: 'https://via.placeholder.com/300/200?id=8', | |
sexo: 'M', | |
estado: 'MS', | |
}, | |
{ | |
id: '009', | |
nome: 'Angélica', | |
idade: 27, | |
email: '[email protected]', | |
foto: 'https://via.placeholder.com/300/200?id=9', | |
sexo: 'F', | |
estado: 'RS', | |
}, | |
{ | |
id: '010', | |
nome: 'Fernando', | |
idade: 31, | |
email: '[email protected]', | |
foto: 'https://via.placeholder.com/300/200?id=10', | |
sexo: 'M', | |
estado: 'SP', | |
} | |
]; | |
const usuariosNormalizados = usuarios.reduce(function(acumulador, usuario) { | |
acumulador[usuario.id] = usuario; | |
return acumulador; | |
}, {}); | |
console.log('usuarios', usuarios) | |
console.log('usuarios com reduce', usuariosNormalizados); | |
const usuariosNormalizadosComFromEntries = Object.fromEntries( | |
usuarios.map(function(usuarioObjeto) { | |
return [ | |
usuarioObjeto.id, | |
usuarioObjeto | |
] | |
}) | |
); | |
console.log(usuarios.map(function(usuarioObjeto) { | |
return [ | |
usuarioObjeto.id, | |
usuarioObjeto | |
] | |
})); | |
console.log('usuariosNormalizadosComFromEntries', usuariosNormalizadosComFromEntries) | |
console.log('todasRespostasComFlatMap', todasRespostasComFlatMap); | |
/* | |
'001': 4, | |
'002': 2, | |
'003': 3, | |
*/ | |
const questoesAgrupadas = Object.fromEntries( | |
todasRespostasComFlatMap | |
.map(function(resp) { | |
return [ resp.questao_id, 0 ] | |
}) | |
); | |
console.log('respostas certas por questao', | |
Object.fromEntries( | |
Object.entries(questoesAgrupadas) | |
.map(function(_questao) { | |
return [ | |
_questao[0], | |
todasRespostasComFlatMap.filter(function(resposta) { | |
return resposta.questao_id === _questao[0] && resposta.acertou | |
}).length | |
] | |
}) | |
) | |
) | |
/* | |
{ | |
'001': ['Ayrton', 'Antonia'], | |
'002': ['Maria', 'Antonia'], | |
} | |
*/ | |
console.groupEnd('entries e fromEntries'); | |
// padStart e padEnd | |
console.group('padStart e padEnd'); | |
console.log('Ayrton'.padStart(20, '-')); | |
console.log('Ayrton'.padEnd(20, '-')); | |
const numeroCartao = '1234567891011223'; | |
const ultimos4Digitos = numeroCartao.slice(-4); | |
console.log( | |
ultimos4Digitos.padStart(numeroCartao.length, '*') | |
) | |
console.groupEnd('padStart e padEnd'); | |
/* | |
trim | |
includes | |
find | |
findIndex | |
*/ | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment