Inventory Update
依照一个存着新进货物的二维数组,更新存着现有库存(在 arr1
中)的二维数组. 如果货物已存在则更新数量 . 如果没有对应货物则把其加入到数组中,更新最新的数量. 返回当前的库存数组,且按货物名称的字母顺序排列.
1 function updateInventory(arr1, arr2) { 2 var a = 0; 3 for (var i = 0; i < arr2.length; i++) { 4 //先遍历数组arr2 5 for (var j = 0; j < arr1.length; j++) { 6 // 遍历数组arr1 7 if (arr1[j][1] === arr2[i][1]) { 8 //拿出一个arr[i][1],然后在arr1[j][1]里找,如果有相等的,就让他们的arr[j][0]想加并赋值给arr1[j][0]; 9 arr1[j][0] += arr2[i][0]; 10 } else { 11 //如果arr2[i][1]与arr[j][1]中一个之不相等,就给a加一 12 a += 1; 13 } 14 15 } 16 if (a === arr1.length) { 17 //如果a的值与arr1的数组长度相等,就说明arr1[j][1]中没有与 arr2[i][1]相等的,那么就吧arr2[i]push进arr1; 18 arr1.push(arr2[i]); 19 20 } 21 a = 0; 22 } 23 arr1.sort(function (a, b) { 24 //把arr1按第二项字符串的首字母顺序排序 25 return a[1] > b[1]; 26 }); 27 return arr1; 28 } 29 30 // 仓库库存示例 31 var curInv = [ 32 [21, "Bowling Ball"], 33 [2, "Dirty Sock"], 34 [1, "Hair Pin"], 35 [5, "Microphone"] 36 ]; 37 38 var newInv = [ 39 [2, "Hair Pin"], 40 [3, "Half-Eaten Apple"], 41 [67, "Bowling Ball"], 42 [7, "Toothpaste"] 43 ]; 44 45 //updateInventory([[21, "Bowling Ball"], [2, "Dirty Sock"], [1, "Hair Pin"], [5, "Microphone"]], [[2, "Hair Pin"], [3, "Half-Eaten Apple"], [8, "Toothpaste"], [67, "Bowling Ball"]]); 46 updateInventory(curInv, newInv);