Skip to content

Instantly share code, notes, and snippets.

@programadorabordo
Created August 26, 2020 19:24
Show Gist options
  • Save programadorabordo/ab05e954dc5fcfefa69b8912f6deb9d0 to your computer and use it in GitHub Desktop.
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
<!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