請教各路大神在JavaScript數組中的區間值


是這樣的,這問題實在困擾幾天了,查找資料也沒好的解決辦法。
如:
var code=189;
var array=[180,200,220,240,260,280......];
這樣的數組中去匹配區間值。比如
code是180-199或小於數組最小值那么只取數組中的180值,以此類推,如code大於數組最大值那只取數組中的最大值。
我只取到最大和最小。但其他就沒法了。

5 个解决方案

#1


    var code=289;
    var array=[180,200,220,240,260,280];
    array.push(code);
    array.sort();
    var idx;
    for(var i=0;i<array.length;i++){
        if(array[i] == code){
            idx = i;
        }
    }
    idx = Math.max(0,idx - 1);
    console.log(array[idx]);


插進去排個序,取到他前面那個值。

#2


Array.prototype.filter
Math.max Math.mn

#3


引用 1 樓 functionsub 的回復:
    var code=289;
    var array=[180,200,220,240,260,280];
    array.push(code);
    array.sort();
    var idx;
    for(var i=0;i<array.length;i++){
        if(array[i] == code){
            idx = i;
        }
    }
    idx = Math.max(0,idx - 1);
    console.log(array[idx]);


插進去排個序,取到他前面那個值。


我修改了下,先取值數組里的最小值做判斷,等於最小值直接取最小。


        var code=119,codem;
        var array=[180,200,220,240,260,280];
        var codeMin = Math.min.apply(null,array);
        if (code<=codeMin) {
            codem=codeMin;
        } else {
            array.push(code);
            array.sort();
            var idx;
            for(var i=0;i<array.length;i++){
                if(array[i] == code){
                    idx = i;
                }
            }
            //idx = Math.max(0,idx - 1);
            codem=array[Math.max(0,idx - 1)];
        }
        console.log(codem);  //180  小於數組最小值直取最小

#4


引用 2 樓 zzgzzg00 的回復:
Array.prototype.filter
Math.max Math.mn 


//是min .........

#5


引用 3 樓 calnlao 的回復:
Quote: 引用 1 樓 functionsub 的回復:

    var code=289;
    var array=[180,200,220,240,260,280];
    array.push(code);
    array.sort();
    var idx;
    for(var i=0;i<array.length;i++){
        if(array[i] == code){
            idx = i;
        }
    }
    idx = Math.max(0,idx - 1);
    console.log(array[idx]);


插進去排個序,取到他前面那個值。


我修改了下,先取值數組里的最小值做判斷,等於最小值直接取最小。


        var code=119,codem;
        var array=[180,200,220,240,260,280];
        var codeMin = Math.min.apply(null,array);
        if (code<=codeMin) {
            codem=codeMin;
        } else {
            array.push(code);
            array.sort();
            var idx;
            for(var i=0;i<array.length;i++){
                if(array[i] == code){
                    idx = i;
                }
            }
            //idx = Math.max(0,idx - 1);
            codem=array[Math.max(0,idx - 1)];
        }
        console.log(codem);  //180  小於數組最小值直取最小

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com