簡體   English   中英

在給定的訂單大小下,可以從數組中取出多少個物品

[英]How many items can be taken from an array with given order size

我有一個數組,其中包含數字,數組的順序是固定的。

我想看看我的訂單大小可以從這個數組中取出多少個項目

我的代碼給出了錯誤的結果,例如500個單位可以購買第2個項目,第3個項目為0.66,所以總共可以購買2,66個,但是代碼給出了4。對於250個單位,我可以將第一個項目全部購買,而第二個為0.75項目總數為1,75,但代碼為1.5。

對於300給出2,這是正確的,但通常給出錯誤的結果。

我已經更改了for的內部或外部的結果行,如果條件會影響結果,但結果又是錯誤的(對於給定的數組2100單位,ordersize將使用所有6個結果的項目)

 function calculateOrder() { var coinArray = [100, 200, 300, 400, 500, 600]; var orderSize = 500; var sum = 0; var i = 0; for (i = 0; i < coinArray.length - 1; i++) { if (sum < orderSize) { sum += coinArray[i]; } return i + (orderSize - sum) / coinArray[i]; } } document.write(calculateOrder()); 

您的代碼有三個問題:

  • for循環執行if語句,然后執行return語句,因此它始終在第一次迭代中返回
  • for循環需要迭代,直到i < coinArray.length
  • 所編寫的循環迭代一次 ,以使return語句中的值正確。

這是糾正這些問題的版本:

 function calculateOrder() { var coinArray = [100, 200, 300, 400, 500, 600]; var orderSize = 500; var sum = 0; var i = 0; for (i = 0; i < coinArray.length; i++) { if (sum + coinArray[i] > orderSize) { // if orderSize is exceeded return i + ((orderSize - sum) / coinArray[i]); // 2 + (0.66) } sum += coinArray[i]; // else add to sum } } document.write(calculateOrder()); 

使用下面的代碼。 我為您整理了一些東西。

  1. 創建一個變量來存儲您當前擁有的金額 因此,每當您“購買”一件商品時,您都會減去所購買的商品。
  2. 我改變了一些邏輯使其工作。 基本上,return語句將您的當前金額除以所需金額,以獲取您可以購買的部分商品,然后dds已購買的商品數量
  3. 另外,您還需要在其他位置放置其他內容。 如果if語句結果為false ,則執行else,因此,如果您沒有足夠的錢購買該物品,則執行else。
  4. return 中斷了您的函數,因此這就是您之前的代碼無法正常工作的原因之一。 for循環將執行一次 ,然后中斷。
  5. for循環必須以coinArray.length 你可能以為你所需要的- 1存在,因為數組索引的從0開始,但由於for循環不足和不小於或等於將最后索引處結束。

 function calculateOrder(orderSize) { var coinArray = [100, 200, 300, 400, 500, 600]; var amountOfMoney = orderSize; for (var i = 0; i < coinArray.length; i++) { if (amountOfMoney > coinArray[i]) { amountOfMoney -= coinArray[i]; } else { return i + amountOfMoney / coinArray[i]; } } } document.write(calculateOrder(500)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM