[英]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];
}
你可以做這樣的事情 -
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; } }
這是一個簡單易懂的方法:您需要兩個循環:
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.