You can do this (see comments in the code):
In this first part, I create objects with different names (eg, objeto_andre
, obj_marcos
etc.) and add the values in qt
to 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 just to "rename" created objects:
From objeto_andre
to objeto1
From objeto_marcos
to 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 summed values:
Running:
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);