亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在函數中使用后保留參數的值

在函數中使用后保留參數的值

至尊寶的傳說 2022-08-18 16:00:36
我正在學習Javascript,我正在做一個小程序,根據你的賬單金額和你必須支付的總金額(賬單+小費)計算服務員小費。這將返回 2 個數組,第一個數組包含按賬單支付的提示,第二個數組包含要支付的總計。代碼如下:var myBillsArray = [];var numberOfBills = parseInt(prompt('Please enter the number of bills.'));for(i=0; i<numberOfBills; i++){  myBillsArray[i] = parseInt(prompt(`Insert your bill number ${i+1}`));}holidayBills(myBillsArray);function holidayBills(billsArrays){  var tipsArray =  [];  var finalBillArray = [];    tipsArray = calculateTips(billsArrays);  finalBillArray = calculateFinalBill(myBillsArray, tipsArray);  console.log(tipsArray);  console.log(finalBillArray);}function calculateTips(arrayOfBills){  for(i=0; i<arrayOfBills.length; i++){    if(arrayOfBills[i] < 50){      arrayOfBills[i] *= 0.20;    }else if(arrayOfBills[i] >= 50 && arrayOfBills[i] < 200){      arrayOfBills[i] *= 0.15;    }else{      arrayOfBills[i] *= 0.10;    }  }  return arrayOfBills;}function calculateFinalBill(arrayOfBills, arrayOfTips){  var finalBill = [];  for(i=0; i<arrayOfBills.length; i++){    finalBill[i] = arrayOfBills[i] + arrayOfTips[i];  }  return finalBill;}但我遇到的唯一問題是,當我添加賬單+小費時,賬單值與小費值相同。我認為這是一個范圍問題,但我不知道在哪里。如果你想知道為什么我使用而不是它,那是因為練習要求我這樣做。varlet
查看完整描述

2 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

您的問題是,當您計算提示時,您正在修改 的元素。發生這種情況是因為數組在 JavaScript 中是通過引用傳遞的,這意味著這不是包含 的所有元素的新數組,而是相同的數組。因此,當您將其稱為 時,您對它所做的任何修改都會顯示出來。myBillsArrayarrayOfBillsmyBillsArraymyBillsArray


要解決此問題,您可以執行以下操作:


function calculateTips(arrayOfBills){

  var myTips = [];

  for(i=0; i<arrayOfBills.length; i++){

    if(arrayOfBills[i] < 50){

      myTips[i] = arrayOfBills[i] * 0.20;

    }else if(arrayOfBills[i] >= 50 && arrayOfBills[i] < 200){

      myTips[i] = arrayOfBills[i] * 0.15;

    }else{

      myTips[i] = arrayOfBills[i] * 0.10;

    }

  }

  return myTips;

}


查看完整回答
反對 回復 2022-08-18
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

您可以將計算提示函數更改為以下內容。使用新數組保留函數的結果


function calculateTips(arrayOfBills){

    var tips = []


  for(i=0; i<arrayOfBills.length; i++){

    if(arrayOfBills[i] < 50){

      tips[i] = arrayOfBills[i] * 0.20;

    }else if(arrayOfBills[i] >= 50 && arrayOfBills[i] < 200){

      tips[i] = arrayOfBills[i] * 0.15;

    }else{

      tips[i] = arrayOfBills[i] * 0.10;

    }

  }

  return tips;

}


查看完整回答
反對 回復 2022-08-18
  • 2 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號