FCC(ES6写法) Inventory Update

依照一个存着新进货物的二维数组,更新存着现有库存(在 arr1 中)的二维数组. 若是货物已存在则更新数量 . 若是没有对应货物则把其加入到数组中,更新最新的数量. 返回当前的库存数组,且按货物名称的字母顺序排列。javascript

 

思路:java

1.先写个函数,功能是判断该数组是否存在该字符串,存在则返回一个index。git

2.循环遍历第二个数组,若是在第一个数组中存在当前货物名,则把数量相加,若是不存在就push进去。最后别忘了排序,这里能够用charCodeAt来计算,也能够用三目来比大小,如:a[1][0] > b[1][0] ? 1: 0 ;github

 

let updateInventory = (arr1, arr2) => {
  arr2.forEach( v => {
    let i = hasValue(v[1],arr1);
    i === undefined ? arr1.push(v) : arr1[i][0] += v[0];
  });
  return arr1.sort((a,b) => a[1].charCodeAt(0) - b[1].charCodeAt(0));
};
let hasValue = (str,arr) => {
   for(let i in arr){
    if(arr[i][1] === str) return i;
   }
};
updateInventory([[21, "Bowling Ball"], [2, "Dirty Sock"], [1, "Hair Pin"], [5, "Microphone"]], [[2, "Hair Pin"], [3, "Half-Eaten Apple"], [67, "Bowling Ball"], [7, "Toothpaste"]]);

  

若是有不明白的地方请留言,若是有更好更简便更优化的方法请留言,谢谢。数组

 

更多内容请访问个人我的博客: Bblog函数

相关文章
相关标签/搜索