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函數

相關文章
相關標籤/搜索