You can do it this way (see comments in the code):
In this first part, I create objects with different names (e.g.., objeto_andre
, obj_marcos
etc.) and are the values in qt
for the same name:
var temp = []; // array temporária para guardar os nomes
for(var item of obj){
var novo_obj = "objeto_"+item.nome; // nome do novo objeto
if(!window[novo_obj]){
window[novo_obj] = {nome: item.nome, qt: item.qt}; // se não existe, cria
temp.push(item.nome);
}else{
var q = parseInt(item.qt);
window[novo_obj].qt = (parseInt(window[novo_obj].qt)+q).toString(); // se existe, soma o valor
}
}
This second part is only to "rename" the created objects:
Of objeto_andre
for objeto1
Of objeto_marcos
for objeto2
...
// criar cópia dos objeto para objeto1, objeto2 etc...
for(var o in temp){
var nome = temp[o];
window["objeto"+ (parseInt(o)+1)] = window["objeto_"+nome];
delete window["objeto_"+nome]; // deleto o objeto com o nome original
}
The result is as in this image, separated by names and added values:
In operation:
var obj = [
{nome: "andre", qt: "2"},
{nome: "andre", qt: "3"},
{nome: "marco", qt: "2"},
{nome: "marco", qt: "5"},
{nome: "paulo", qt: "11"},
{nome: "andre", qt: "1"}
];
var temp = []; // array temporária para guardar os nomes
for(var item of obj){
var novo_obj = "objeto_"+item.nome; // nome do novo objeto
if(!window[novo_obj]){
window[novo_obj] = {nome: item.nome, qt: item.qt}; // se não existe, cria
temp.push(item.nome);
}else{
var q = parseInt(item.qt);
window[novo_obj].qt = (parseInt(window[novo_obj].qt)+q).toString(); // se existe, soma o valor
}
}
// criar cópia dos objeto para objeto1, objeto2 etc...
for(var o in temp){
var nome = temp[o];
window["objeto"+ (parseInt(o)+1)] = window["objeto_"+nome];
delete window["objeto_"+nome]; // deleto o objeto com o nome original
}
console.log("Objeto 1", objeto1);
console.log("Objeto 2", objeto2);
console.log("Objeto 3", objeto3);
Taking into account that names do not have spaces, accents or
special characters. If this is possible, it will be necessary to
call another function that removes these characters.
You can create another array to store only the groups
– adventistaam
It is possible that in the looping the values are compared and after creating the separate objects?
– Carlos Lopes