Boa tarde Pessoal,
Estou montando uma aplicação onde a principal função é carregar alguns arquivos JSON fazer o alteração de alguns dados dele e devolver um novo arquivo.
Em uma parte do arquivo, dentro de um array, eu populo com dois novos arrays, o detalhe é que quando eu vejo o arquivo as duas posições inseridas são iguais.
Vamos ao código que acho que deve ser mais fácil.
- um dos arquivos JSON que eu atualizo, dessa estrutura eu crio duas intancias e insiro em outra estrutura mudando o id que estã como null:
{
“aliasColors”: {
“35M”: “#D683CE”,
“cobranca”: “#000000”,
“cobranca_parcial”: “#000001”,
“conectados”: “#3F6833”,
“rastreador”: “#99440A”,
“vala”: “#BF1B00”
},
“bars”: false,
“datasource”: null,
“fill”: 1,
“height”: “382”,
“id”: null,
“legend”: {
“alignAsTable”: false,
“avg”: false,
“current”: true,
“max”: false,
“min”: false,
“rightSide”: false,
“show”: true,
“total”: false,
“values”: true
},
“lines”: true,
“linewidth”: 1,
“links”: [],
“nullPointMode”: “null”,
“percentage”: false,
“pointradius”: 5,
“points”: false,
“renderer”: “flot”,
“seriesOverrides”: [],
“span”: 6,
“stack”: false,
“steppedLine”: false,
“targets”: [],
“thresholds”: [],
“timeFrom”: null,
“timeShift”: null,
“title”: “null”,
“tooltip”: {
“shared”: true,
“sort”: 0,
“value_type”: “individual”
},
“transparent”: true,
“type”: “graph”,
“xaxis”: {
“mode”: “time”,
“name”: null,
“show”: true,
“values”: []
},
“yaxes”: [
{
“format”: “short”,
“label”: null,
“logBase”: 1,
“max”: null,
“min”: null,
“show”: true
},
{
“format”: “short”,
“label”: null,
“logBase”: 1,
“max”: null,
“min”: null,
“show”: true
}
]
}
- Funçções que fazem a atualização:
function getPanelConfig(bras, idNumber) { let panel = require("./templates/bras_profile/panel.json") panel.id = idNumber; panel.title = bras; panel.targets.push(getTargetTotalUsersConfig(bras)); let targetsProfile = getTargetsProfileConfig(bras); targetsProfile.forEach(element => { panel.targets.push(element); }); let targetsDownstreamProfile = getTargetsDownstreamProfileConfig(bras); targetsDownstreamProfile.forEach(element => { panel.targets.push(element); }); return panel;
}
function getRowConfig(cluster) {
let row = require("./templates/bras_profile/row.json");
row['panels'].push(getPanelConfig(cluster + "a", 1));
row['panels'].push(getPanelConfig(cluster + "b", 2));
console.log("panelId: " + row.panels[0].id);
console.log("panelId: " + row.panels[1].id);
return row;
}
Vejam que na função acima eu faço o print dos IDs, porém, sempre vem 2, fiz um teste fazendo um print na função: getPanelConfig(bras, idNumber) antes do return, lá aparece normal, alguém, sabe porque o push fica assim?
Att,
Paulo