[Freecodecamp]インベントリの更新
Inventory Update
トピック要件
エクササイズの上のFreecodecamp
タイトルの要件は次のとおりです。
新しい入荷品を含む2次元配列に従って、既存の在庫(arr1内)で2次元配列を更新します。商品がすでに存在する場合は、数量を更新します。対応する商品がない場合は、それを配列に追加して、最新の数量を更新します。現在の在庫配列を返し、商品名のアルファベット順に並べます。
問題が発生した場合は、エラーのヒントを確認し、ドキュメントを読み、検索し、質問することを忘れないでください。
問題分析
1.更新シーケンスは次の配列に従う必要があります(forループ)
2.倉庫もプロセス中に変更されます
3.同じタイプの場合は数量を増やし、そうでない場合はウェアハウスに新しいアレイを追加します
4.追加後の配列は、名前に従ってソートする必要があります
コードソリューション
1.新しいアイテムを追加する関数。既に存在するかどうかに応じて、配列に単一の配列要素を追加します。
function updateSingle(singleArr){//The input is a single array arr1 is the warehouse in the global variable for(var j = 0 j if(singleArr.indexOf(arr1[j][1])>-1){//If there is the same name, only increase the number arr1[j][0] = arr1[j][0] + singleArr[0] return console.log('yes!')//Directly return without running the following code } } console.log('no')//The original warehouse did not add the array as an element to the warehouse (arr1) arr1.push(singleArr) }
2.更新とウェアハウスを追加します
for(var x = 0 x //After this operation, the arr1 warehouse is the latest
3.名前で並べ替え
arr1.sort(function(value1,value2){ var a = value1[1] var b = value2[1] a = a.toLowerCase() b = b.toLowerCase() return a > b })
完全なコード:
function updateInventory(arr1, arr2) { function updateSingle(singleArr){ for(var j = 0 j if(singleArr.indexOf(arr1[j][1])>-1){ arr1[j][0] = arr1[j][0] + singleArr[0] return false } } arr1.push(singleArr) } for(var x = 0 x function(value1,value2){ var a = value1[1] var b = value2[1] a = a.toLowerCase() b = b.toLowerCase() return a >b }) console.log(arr1) return arr1 } // Warehouse inventory example var curInv = [ [21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone'] ] var newInv = [ [2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste'] ] updateInventory(curInv, newInv)
コメントへようこそ、いいね、コメントはあなた自身にポイントを追加することができます