Agrupar array de objetos por id igual - Javascript

13/05/2022

7

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

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

Tiago

Responder

Posts

21/05/2022

Diego Marinho

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>

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar