繁体   English   中英

我有一个对象数组。 每个 object 都包含最大和最小键值对。 如何找到包含预定义值的 object?

[英]I have an array of objects. Each object contains max and min key value pairs. How do I find the object that contains a predefined value?

我有一系列看起来像这样的保险费率

const insuranceRate = [
{
    "min_value": 1,
    "max_value": 25000,
    "add": 328
}, {
    "min_value": 25001,
    "max_value": 25500,
    "add": 331
}, {
    "min_value": 25501,
    "max_value": 26000,
    "add": 335
}, {
    "min_value": 26001,
    "max_value": 26500,
    "add": 338
}]

假设我以 25,900 美元的价格购买了一辆车。 如何找到合适的 object 并在我的保险费用中增加 335 美元?

这很简单,通过每个元素都有一个 for 循环 go 并检查你的值是否在最小值和最大值之间,function 看起来像这样:

function F(value){
    for( i=0;i<insuranceRate.length;i++){
        if ( value >= insuranceRate[i].min_value  && value <= insuranceRate[i].max_value){
            return insuranceRate[i];
        }
    }
    return -1;
}

它返回范围内的元素,然后你可以使用它来获取你的添加值,如果你的值不在范围之间,它会返回 -1

如果您想要价格最低的,我会选择 go :

var valid_rates = []; 
insuranceRate.forEach((item, index)=>{ 
    if (price >= item.min_value &&  price <= item.max_value) { 
        valid_rates.push(item.add) ;
    }
}) ;

// Lowest price
Math.min(valid_rates) ;

循环遍历数组并检查您的汽车成本是否在范围内,如果是 - 将其添加到保险成本中 - 在此示例中,我将其初始化为 0:

var my_car = 25900;
var insuranceCost = 0;
for (var i=0; i<insuranceRate.length; i++) {
    if (my_car >= insuranceRate[i].min_value && 
        my_car <= insuranceRate[i].max_value) {
           insuranceCost += insuranceRate[i].add;
    }
} 

console.log(insuranceCost); //335

给你 go

 const insuranceRate = [
   {
    "min_value": 1,
    "max_value": 25000,
    "add": 328
   }, {
    "min_value": 25001,
    "max_value": 25500,
    "add": 331
   }, {
    "min_value": 25501,
    "max_value": 26000,
    "add": 335
   }, {
    "min_value": 26001,
    "max_value": 26500,
    "add": 338
   }];
   var price=25900;

   var filter=insuranceRate.filter(i=>price >= i.min_value && price <= 
   i.max_value);
   console.log("Result:",filter);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM