我正試圖解決算法挑戰。庫存更新挑戰
這裏是提示:
比較並更新存儲在一個2D陣列針對新鮮輸送的第二2D陣列的庫存。更新當前的現有庫存料品數量(在arr1中)。如果找不到物料,請將新物料和數量添加到庫存數組中。返回的庫存數組應按項目按字母順序排列。
這裏是我的代碼:
function updateInventory(arr1, arr2) {
// All inventory must be accounted for or you're fired!
var myMap = new Map();
for (var i = 0; i < arr1.length; i++){
myMap.set(arr1[i][1], arr1[i][0]);
}
for (i = 0; i < arr2.length; i++){
if (!myMap.has(arr2[1])){
myMap.set(arr2[i][1], 0);
}
myMap.set(arr2[i][1], myMap.get(arr2[i][1]) + arr2[i][0]);
}
var arr3 = [];
// sorting
myMap.forEach(function(value, key){
var i = 0;
while (i < arr3.length && key > arr3[i][1])
i++;
arr3.splice(i, 0, [value, key]);
});
return arr3;
}
// Example inventory lists
var curInv = [
[21, "Bowling Ball"],
[2, "Dirty Sock"],
[1, "Hair Pin"],
[5, "Microphone"]
];
var newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
updateInventory(curInv, newInv);
https://jsfiddle.net/5fvgdL84/
下面是應該發生的事情:
updateInventory([21, 「保齡球」],[2, 「Dirty Sock」],[1,「髮夾」],[5,「麥克風」]],[[2,「髮夾」],[3,「半食蘋果」],[67,球「],[7,」牙膏「]])
應該返回
[88, 「保齡球」],[2, 「髒襪子」],[3, 「夏萍」],[3, 「吃了一半的蘋果」 ],[5,「麥克風」],[7,「牙膏」]]。
編輯:我想我已經有了一個解決方案。但是,我似乎無法找到代碼中的一個錯誤。我需要特別的幫助。