依照一个存着新进货物的二维数组,更新存着现有库存(在 arr1 中)的二维数组. 如果货物已存在则更新数量 . 如果没有对应货物则把其加入到数组中,更新最新的数量. 返回当前的库存数组,且按货物名称的字母顺序排列.
code
function updateInventory(arr1, arr2) {
var oCur={};
var oNew={};
function arrToObj(arr,obj){
for(var i=0;i<arr.length;i++){
obj[arr[i][1]]=arr[i][0];
}
}//构造库存对象。
arrToObj(arr1,oCur);
arrToObj(arr2,oNew);
//添加货物及属性
for(var i in oNew){
console.log(oCur.hasOwnProperty(i));
if(oCur.hasOwnProperty(i)){
oCur[i]+=oNew[i];
}else{
oCur[i]=oNew[i];
}
}
//属性名排序
function objKeySort(obj) {//排序的函数
var newkey = Object.keys(obj).sort();
//newkey是一个排序后的属性名数组
var newObj = {};
for (var i = 0; i < newkey.length; i++) {
newObj[newkey[i]] = obj[newkey[i]];
}
return newObj;//返回排好序的新对象
}
oCur=objKeySort(oCur);
//反向编译这个对象,然后返回成最初的数组。
var newArr=[];
for(i in oCur){
newArr.push([oCur[i],i]);
}
console.log(newArr);
return newArr;
}