Group object properties by common values with js

JavaScript

var name = ["Ted", "Sarah", "Nancy", "Ted", "Sarah", "Nancy"];
var prodID = [111, 222, 222, 222, 222, 222];
var prodName = ["milk", "juice", "juice", "juice", "juice", "juice"];
var qty = [1, 2, 3, 3, 3, 1];
var data = {};


name.forEach(function(nam, i) {
    data[nam] = data[nam] || {};
    pid = prodID[i];
    data[nam][pid] = data[nam][pid] || {total:0, pname: prodName[i]};
    data[nam][pid].total += qty[i];
});

console.log(JSON.stringify(data));

message = Object.keys(data).map(function(nam) {
    var purchases = data[nam];
    //console.log(JSON.stringify(purchases, "", " "));
    return nam + ' got ' + Object.keys(purchases).map(function(pid) {
        return purchases[pid].total + ' bottle(s) of ' + purchases[pid].pname
    }).join(' and ');
}).join(' <br> ');

document.body.innerHTML = message;