Inventory Update
2017-11-01 本文已影响0人
Awoooo
依照一个存着新进货物的二维数组,更新存着现有库存(在 arr1 中)的二维数组. 如果货物已存在则更新数量 . 如果没有对应货物则把其加入到数组中,更新最新的数量. 返回当前的库存数组,且按货物名称的字母顺序排列.
对于二维数组排序问题,可以变换成一维数组排序来解决。
function updateInventory(arr1, arr2) {
// 请保证你的代码考虑到所有情况
var curInv = {};
var newInv = {};
// 把现有库存的二维数组转换成库存对象
arr1.forEach(function(item, arr) {
curInv[item[1]] = item[0];
});
// 把新建货物的二维数组转换成库存对象
arr2.forEach(function(item, arr) {
newInv[item[1]] = item[0];
});
// 归并货物品类及数量
for (var key in newInv) {
if(curInv[key]) {
curInv[key] += newInv[key];
} else {
curInv[key] = newInv[key];
}
}
// 用一维数组存储新库存所有品类
var typeArr = [];
for (var k in curInv) {
typeArr.push(k);
}
// 对品类进行排序
typeArr = typeArr.sort();
// 把库存对象转换成二维数组
arr1 = [];
for (var i in typeArr) {
var itemArr = [];
var type = typeArr[i];
var count = curInv[typeArr[i]];
itemArr.push(count);
itemArr.push(type);
arr1.push(itemArr);
}
return arr1;
}