我有一个像这样的对象数组
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次。那么有没有人能帮我,建议我一个有效处理这件事的方法呢?
您必须对最后一个条件/范围进行更改
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;
}