Agrupar array de objetos por id igual - Javascript
Olá, estou tentando resolver esse problema mas está complicado,
possuo um array de objetos com os campos telefone e idLoja, como uma loja tem mais de um telefone gostaria de unir os vários campos de telefone de acordo com o idLoja
Possuo esse array de objetos
e gostaria que o formato final ficasse assim:
Qual seria a melhor forma de montar essa lógica?
possuo um array de objetos com os campos telefone e idLoja, como uma loja tem mais de um telefone gostaria de unir os vários campos de telefone de acordo com o idLoja
Possuo esse array de objetos
const dados = [
{ telefone: '1159482152', idLoja: 1 },
{ telefone: '1159289120', idLoja: 1 },
{ telefone: '1192092620', idLoja: 1 },
{ telefone: '1189526207', idLoja: 1 },
{ telefone: '1559482152', idLoja: 2 },
{ telefone: '1559289120', idLoja: 2 },
{ telefone: '1592092620', idLoja: 2 },
{ telefone: '1589526207', idLoja: 2 },
]e gostaria que o formato final ficasse assim:
[
{
idLoja: 1,
telefone: ['1159482152', '1159289120', '1192092620', '1189526207']
},
{
idLoja: 2,
telefone: ['1559482152', '1559289120', '1592092620', '1589526207']
}
]Qual seria a melhor forma de montar essa lógica?
Tiago
Curtidas 0
Respostas
Diego Marinho
13/05/2022
Fala amigão, não sei se é a melhor forma de se fazer, mas fiz um esboço aqui , e funcionou. Usei o includes dentro de um loop. Dá uma olhada e vê se melhora esse código.
<script>
const dados = [
{ telefone: '1159482152', idLoja: 1 },
{ telefone: '1159289120', idLoja: 1 },
{ telefone: '1192092620', idLoja: 1 },
{ telefone: '1189526207', idLoja: 1 },
{ telefone: '1559482152', idLoja: 2 },
{ telefone: '1559289120', idLoja: 2 },
{ telefone: '1592092620', idLoja: 2 },
{ telefone: '1589526207', idLoja: 2 },
]
function organizandoObjeto(arr){
let memory={
temp : [],
result : []
}
arr.map( o=> {
if(!memory.temp.includes(o.idLoja)){
memory.temp.push(o.idLoja)
const tel = dados.filter( t => t.idLoja === o.idLoja)
memory.result.push({ idLoja : o.idLoja, telefone: tel })
}
})
return memory.result
}
// variável que retorna o objeto organizado
let NovoArray = organizandoObjeto(dados)
</script>
GOSTEI 0