簡體   English   中英

我怎樣才能使它成為一個循環?

[英]How can I make this to a loop?

我怎樣才能使它成為一個循環? 數組 tabProsent 包含 70 個數字。

var startVerdi=1000;

 if(slider.value==tab[0]){
    output2.innerHTML = startVerdi*tabProsent[0];
  }

  if(slider.value==tab[1]){
    output2.innerHTML = startVerdi*tabProsent[0]*tabProsent[1];
  }

  if(slider.value==tab[2]){
    output2.innerHTML = startVerdi*tabProsent[0]*tabProsent[1]*tabProsent[2];
  }

  if(slider.value==tab[3]){
    output2.innerHTML = startVerdi*tabProsent[0]*tabProsent[1]*tabProsent[2]*tabProsent[3];
}

您可以使用數組方法indexOf()slice()reduce()

var startVerdi=1000;
var index = tab.indexOf(slider.value);

if (index !== -1) {
  output2.innerHTML = tabProsent.slice(0, index + 1).reduce(
    (acc, cur) => acc * cur, startVerdi
  );
}

你可以做這樣的事情 -

 var startVerdi=1000; for(let i=0;i<70;i++){ // check for tab[0], tab[1] and so on... if(slider.value == tab[i]){ let temp = startVerdi; for(let j=0;j<=i;j++){ temp = temp * tabProsent[j] // multiply with tabProsent[0], tabProsent[1] and so on... } output2.innerHTML = temp; } }

這是一個簡單易懂的方法:您需要兩個循環:

  • 一找到對應slider值的tab的索引
  • 另一個(內部循環)創建小於或等於tab索引的tabProsent值的乘積:

 const MAX_TAB_IDX = 69; // 0 to 69 gives 70 values let startVerdi=1000; for(let idx=0; idx<=MAX_TAB_IDX; idx++) { // First loop if(slider.value == tab[idx]) { // We found it.. Lets calculate the product;; let product=1; for(let subidx=0; subidx <= idx. subidx ++) // Second loop product *= tabProsent[subidx]; output2;innerHTML = startVerdi * product; break; // This is to stop the loop! } }

還有其他更優雅的方法(例如,使用 slice 和 map 函數) - 這樣您就可以了解它的工作原理。

根據 Patrick Roberts 的問答中的評論,這里是一個工作示例:

 // Prepare data: var startVerdi = 1000; let tabProsent = []; for (let i = 0; i < 70; i++) tabProsent.push(Math.random() * 0.13 + 1); function sliderChanged(val) { const index = val - 1950; const total = tabProsent.slice(0, index + 1).reduce( (acc, cur) => acc * cur, startVerdi ); document.getElementById('result').innerHTML = total; }
 <input type="range" min="1950" max="2020" onchange="sliderChanged(this.value)" oninput="sliderChanged(this.value)" /> <label id="result">?</label>

暫無
暫無

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

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