Itens de classificação e agrupamento de JavaScript na matriz
Estou tentando fazer algum mapeamento em JavaScript. O que estou tentando fazer é tentar verificar se o tipo dearr
existe emdatasetarr
, se existir, recebo o índice emdatasetarr
e aumente a quantidade desse índice. Se não existir, adiciono uma nova entrada emdatasetarr
. Aqui está o meu código:
var datasetarr = [];
var pos;
for(var i = 0; i < arr.length; i++){
console.log('unsorted ' + arr[i].type + ' ' + arr[i].quantity);
if(datasetarr.indexOf(arr[i].type) > -1){
pos = datasetarr.indexOf(arr[i].type);
datasetarr[pos].quantity += arr[i].quantity;
}else{
datasetarr.push({type: arr[i].type, quantity: arr[i].quantity});
}
}
for(var i = 0; i < datasetarr.length; i++){
console.log('sorted ' + datasetarr[i].type + ' ' + datasetarr[i].quantity);
}
A saída deve ser:
kitchen appliance 20
home entertainment 8
batteries & lightings 4
home appliance 12
Então, posso obter o tipo e a quantidade de cada um e armazenar em uma matriz para que eu possa plotar com o gráfico.
No entanto, com o meu código acima, as coisas que estou recebendo são exatamente as mesmas que as não ordenadas. Alguma idéia de que parte da minha lógica deu errado?