cari

Rumah  >  Soal Jawab  >  teks badan

Pendekatan yang lebih bijak ialah menulis fungsi yang menggunakan banyak pernyataan bersyarat untuk mengembalikan nilai tambahan berdasarkan julat berangka yang berbeza

<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粉311464935P粉311464935549 hari yang lalu575

membalas semua(1)saya akan balas

  • P粉930534280

    P粉9305342802023-08-18 10:53:55

    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));
    
    })();

    balas
    0
  • Batalbalas