Pendekatan yang lebih bijak ialah menulis fungsi yang menggunakan banyak pernyataan bersyarat untuk mengembalikan nilai tambahan berdasarkan julat berangka yang berbeza
P粉311464935
P粉311464935 2023-08-17 23:18:09
0
1
527
<p>Saya cuba menulis fungsi yang mengembalikan nilai tertentu jika input berada dalam julat nombor tertentu. </p> <p>Biasanya, saya akan menulis satu siri pernyataan if/else if untuk menyelesaikan tugasan ini. Walau bagaimanapun, saya berurusan dengan sebilangan besar julat, jadi menulis 30+ if/else jika kenyataan kelihatan tidak cekap. </p> <p>Andaikan saya mempunyai nombor minimum dan maksimum untuk julat keseluruhan dan saya mahu membahagikannya kepada julat yang lebih kecil. Untuk setiap julat saya ingin mengembalikan beberapa nilai. Sebaik-baiknya, nilai pulangan untuk setiap julat akan dikurangkan dengan beberapa nombor tetap. </p> <p>Untuk menyediakan konteks, saya cuba mengira nilai berdasarkan perbatuan menggunakan sesuatu seperti ini. Sebagai contoh, jika perbatuan adalah antara 101-120 batu, kadarnya adalah sama dengan 80% daripada perbatuan. Peratusan berkurangan apabila perbatuan meningkat. Selain itu, nilai peratusan penurunan boleh menjadi nombor tetap (seperti <kod>-0.05</kod>)</p> <pre class="brush:php;toolbar:false;">... lain jika (m >= 101 && m <= 120) kembalikan 0.80 lain jika (m >= 121 && m <= 140) kembalikan 0.75 ...</pra> <p>Memandangkan terdapat corak dalam nilai pulangan untuk setiap julat, saya fikir ia boleh dilakukan dengan cara yang lebih baik daripada menulis sekumpulan pernyataan if/else, tetapi saya tidak pasti caranya. Ada idea? </p>
P粉311464935
P粉311464935

membalas semua(1)
P粉930534280

Contoh anda tidak meningkat sebanyak 15; jadi, saya mengandaikan itu salah taip.

Saya akan menggunakan fungsi untuk menyelesaikannya. Contohnya:

(() => {

// 在你的例子中,你有 .95 -> .9 -> .85,因此这从1开始。
const STARTING_RETURN_VALUE = 1;

// if语句中的递增范围是15
const INCREMENT = 15;

// 这是每个间隔中返回值递减的值
const DECREASING_RETURN_VALUE = .05;

const getReturn = (x, increment, starting_return_value, decreasing_return_value) => {
     return starting_return_value - (Math.floor(x/increment)+1)*decreasing_return_value;
}

console.log(getReturn(29, INCREMENT, STARTING_RETURN_VALUE, DECREASING_RETURN_VALUE));

})();
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan