手记

JS中的关于实现进货系统的实例

依照一个存着新进货物的二维数组,更新存着现有库存(在 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;
}
0人推荐
随时随地看视频
慕课网APP