I'm trying to add all the numbers for matching arrays and remove the duplicate names. It works for the first instance, but the while loop won't go past Apples.
function updateInventory(arr1, arr2) {
function alphabetizer(a, b) {
if (a[1] < b[1]) return -1;
if (a[1] > b[1]) return 1;
return 0;
}
var newInv = arr1.concat(arr2).sort(alphabetizer);
for(var i = 0; i < newInv.length; i++) {
while(newInv[i][1] === newInv[i++][1]) {
newInv[i] += newInv[i++][0];
newInv.push([newInv[i][0], newInv[i][1]]);
newInv.splice(i,2);
}
}
return newInv;
}
// Example inventory lists
var curInv = [
[21, "Bowling Ball"],
[2, "Dirty Sock"],
[1, "Hair Pin"],
[5, "Microphone"],
[10, "Apples"]
];
var newInv = [
[9, "Apples"],
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
updateInventory(curInv, newInv);
It keeps giving me the error TypeError: newInv[(+ i)] is undefined
But I am not sure why since i is defined, and if I just try to run newInv[i]
I get the first result.