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?

questionAnswers(5)

yourAnswerToTheQuestion