freeCodeCamp

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;
}
上一篇下一篇

猜你喜欢

热点阅读