【问题标题】:Identify in which range a given number falls in array of object确定给定数字在对象数组中的哪个范围
【发布时间】:2021-01-07 23:21:00
【问题描述】:

我有一个对象数组,比如

const score_card = [
        { "range":"0.6-1.5", "point":"10"},
        { "range":"1.6-2.5", "point":"20"},
        { "range":"2.6-3.5", "point":"30"},
        { "range":"3.6-4.5", "point":"40"},
        { "range":"4.6+", "point":"50"}
    ]    

现在,如果我收到一个数字 1.7,那么我需要找出它落在哪个范围内,所以在我的示例中,它落在 1.6-2.5 之间,相关点数是 20。

由于 score_card 数组一直都是一样的,所以我使用 switch case 如下:

let number = 1.7

switch(number) {
   case (number>=0.6 || number<=1.5):
             console.log('points : 10')
             break;
   case (number>=1.6 || number <=2.5):
            console.log('points : 20')
              break;
   case (number >=2.6 || number <=3.5):
            console.log('points : 30')
             break;
   case (number>=3.6 || number<=4.5):
            console.log('points : 40')
             break;
   case (number>=4.6):
             console.log('points : 50')
             break;
   default:
        console.log('none')
                  
}    

现在的问题是我们在 switch case 中传递的数字(在我们的示例 1.7 中)是数组的一部分,并且这个 switch case 在循环中编写以逐个获取数字。这会使代码更长并且可能更慢对于不同的情况,我必须再做 4 次。 那么任何人都可以帮助我并建议我一种有效处理此问题的方法吗?

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    您必须对最后一个条件/范围进行更改

    const score_card = [
        { "range": "0.6-1.5", "point": "10" },
        { "range": "1.6-2.5", "point": "20" },
        { "range": "2.6-3.5", "point": "30" },
        { "range": "3.6-4.5", "point": "40" },
        { "range": "4.6+", "point": "50" }
    ]
    
    const getPoints = score => {
        let points = 0;
        score_card.some(slab => {
            let [low, high] = slab.range.split('-');
            if (score >= +low && score <= +high) points = +slab.point;
        })
        return points;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多