Utilizei o reduce para fazer o agrupamento do meu Json, porém preciso agrupar por mais de 1 parâmetro, para fazer o group corretamente.
Segue a função utilizada:
this.totalSpecific = obj.reduce(function (acumulador, valor) { var indice = acumulador.map((o) => o.janela).indexOf(valor.janela); if (indice == -1) { acumulador.push(valor); } else { acumulador[indice].qtd += valor.qtd; } return acumulador; }, []);
Usando essa função tenho o seguinte retorno:
[{"janela":"08","qtd":2342,"port":0},
{"janela":"20","qtd":1546,"port":0}]
Exemplo de retorno que necessito:
[{"janela":"08","qtd":1142,"port":0},
{"janela":"08","qtd":1250,"port":1}
{"janela":"08","qtd":950,"port":2}
{"janela":"20","qtd":1046,"port":0},
{"janela":"20","qtd":450,"port":1},
{"janela":"20","qtd":50,"port":2}]
Segue Json usado:
let obj = [{
"janela": "08 ",
"qtd": 3,
"port": 0
},
{
"janela": "08 ",
"qtd": 11,
"port": 0
},
{
"janela": "08 ",
"qtd": 63,
"port": 0
},
{
"janela": "08 ",
"qtd": 2,
"port": 0
},
{
"janela": "08 ",
"qtd": 129,
"port": 0
},
{
"janela": "08 ",
"qtd": 3,
"port": 0
},
{
"janela": "08 ",
"qtd": 5,
"port": 0
},
{
"janela": "08 ",
"qtd": 6,
"port": 0
},
{
"janela": "08 ",
"qtd": 33,
"port": 0
},
{
"janela": "08 ",
"qtd": 53,
"port": 0
},
{
"janela": "08 ",
"qtd": 77,
"port": 0
},
{
"janela": "08 ",
"qtd": 589,
"port": 0
},
{
"janela": "08 ",
"qtd": 4,
"port": 0
},
{
"janela": "08 ",
"qtd": 13,
"port": 0
},
{
"janela": "08 ",
"qtd": 18,
"port": 0
},
{
"janela": "08 ",
"qtd": 1,
"port": 0
},
{
"janela": "08 ",
"qtd": 131,
"port": 0
},
{
"janela": "08 ",
"qtd": 36,
"port": 0
},
{
"janela": "08 ",
"qtd": 24,
"port": 0
},
{
"janela": "08 ",
"qtd": 109,
"port": 0
},
{
"janela": "08 ",
"qtd": 1,
"port": 0
},
{
"janela": "08 ",
"qtd": 11,
"port": 0
},
{
"janela": "08 ",
"qtd": 40,
"port": 0
},
{
"janela": "08 ",
"qtd": 1,
"port": 0
},
{
"janela": "08 ",
"qtd": 6,
"port": 0
},
{
"janela": "08 ",
"qtd": 43,
"port": 0
},
{
"janela": "08 ",
"qtd": 351,
"port": 0
},
{
"janela": "08 ",
"qtd": 68,
"port": 0
},
{
"janela": "08 ",
"qtd": 21,
"port": 0
},
{
"janela": "08 ",
"qtd": 84,
"port": 0
},
{
"janela": "08 ",
"qtd": 340,
"port": 0
},
{
"janela": "08 ",
"qtd": 6,
"port": 0
},
{
"janela": "08 ",
"qtd": 5,
"port": 1
},
{
"janela": "08 ",
"qtd": 3,
"port": 1
},
{
"janela": "08 ",
"qtd": 5,
"port": 1
},
{
"janela": "08 ",
"qtd": 3,
"port": 1
},
{
"janela": "08 ",
"qtd": 9,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 2,
"port": 2
},
{
"janela": "08 ",
"qtd": 3,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 3,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 6,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 2,
"port": 2
},
{
"janela": "08 ",
"qtd": 1,
"port": 2
},
{
"janela": "08 ",
"qtd": 5,
"port": 2
},
{
"janela": "08 ",
"qtd": 3,
"port": 2
},
{
"janela": "20 ",
"qtd": 150,
"port": 0
},
{
"janela": "20 ",
"qtd": 4,
"port": 0
},
{
"janela": "20 ",
"qtd": 12,
"port": 0
},
{
"janela": "20 ",
"qtd": 1,
"port": 0
},
{
"janela": "20 ",
"qtd": 38,
"port": 0
},
{
"janela": "20 ",
"qtd": 188,
"port": 0
},
{
"janela": "20 ",
"qtd": 247,
"port": 0
},
{
"janela": "20 ",
"qtd": 9,
"port": 0
},
{
"janela": "20 ",
"qtd": 11,
"port": 0
},
{
"janela": "20 ",
"qtd": 2,
"port": 0
},
{
"janela": "20 ",
"qtd": 1,
"port": 0
},
{
"janela": "20 ",
"qtd": 1,
"port": 0
},
{
"janela": "20 ",
"qtd": 22,
"port": 0
},
{
"janela": "20 ",
"qtd": 155,
"port": 0
},
{
"janela": "20 ",
"qtd": 23,
"port": 0
},
{
"janela": "20 ",
"qtd": 1,
"port": 0
},
{
"janela": "20 ",
"qtd": 1,
"port": 0
},
{
"janela": "20 ",
"qtd": 1,
"port": 0
},
{
"janela": "20 ",
"qtd": 15,
"port": 0
},
{
"janela": "20 ",
"qtd": 96,
"port": 0
},
{
"janela": "20 ",
"qtd": 81,
"port": 0
},
{
"janela": "20 ",
"qtd": 12,
"port": 0
},
{
"janela": "20 ",
"qtd": 75,
"port": 0
},
{
"janela": "20 ",
"qtd": 169,
"port": 0
},
{
"janela": "20 ",
"qtd": 9,
"port": 0
},
{
"janela": "20 ",
"qtd": 5,
"port": 1
},
{
"janela": "20 ",
"qtd": 31,
"port": 1
},
{
"janela": "20 ",
"qtd": 1,
"port": 1
},
{
"janela": "20 ",
"qtd": 5,
"port": 1
},
{
"janela": "20 ",
"qtd": 31,
"port": 1
},
{
"janela": "20 ",
"qtd": 1,
"port": 1
},
{
"janela": "20 ",
"qtd": 4,
"port": 2
},
{
"janela": "20 ",
"qtd": 3,
"port": 2
},
{
"janela": "20 ",
"qtd": 1,
"port": 2
},
{
"janela": "20 ",
"qtd": 38,
"port": 2
},
{
"janela": "20 ",
"qtd": 3,
"port": 2
},
{
"janela": "20 ",
"qtd": 18,
"port": 2
},
{
"janela": "20 ",
"qtd": 7,
"port": 2
},
{
"janela": "20 ",
"qtd": 3,
"port": 2
},
{
"janela": "20 ",
"qtd": 1,
"port": 2
},
{
"janela": "20 ",
"qtd": 61,
"port": 2
},
{
"janela": "20 ",
"qtd": 3,
"port": 2
},
{
"janela": "20 ",
"qtd": 6,
"port": 2
}
]