库存更新算法挑战
依照一个存着新进货物的二维数组,更新存着现有库存的二维数组.
如果货物已存在则更新数量.
如果没有对应货物则把其加入到数组中,更新最新的数量.
返回当前的库存数组,且按货物名称的字母顺序排列.
function updateInventory(arr1, arr2) {
let key = false;
let interArr = [];
let interElem = [];
console.log("原货单:",arr1);
console.log("进货单:",arr2);
for(let i = 0;i<arr2.length;i++){
for(let j = 0;j<arr1.length;j++){
if(arr2[i][1] === arr1[j][1]){
arr1[j][0] += arr2[i][0];
key = true;
}
}
if(!key){
interArr.push(arr2[i]);
}
key = false;
}
for(let k = 0;k<interArr.length;k++){
arr1.push(interArr[k]);
}
function orderArr(j,start,end) {
if(arr1[j][1].slice(start,end) > arr1[j+1][1].slice(start,end)){
interElem =arr1[j+1];
arr1[j+1] = arr1[j];
arr1[j] = interElem;
}else if(arr1[j][1].slice(start,end) === arr1[j+1][1].slice(start,end)){
orderArr(start++,end++);
}
}
for(let i = 0;i<arr1.length-1;i++){
for(let j = 0;j<arr1.length-1-i;j++){
orderArr(j,0,1);
}
}
console.log("新货单:",arr1);
return arr1;
}
let curInv = [
[21, "Bowling Ball"],
[2, "Dirty Sock"],
[1, "Hair Pin"],
[5, "Microphone"]
];
let newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
updateInventory(curInv, newInv);