Javascript 取值更接近的数组

Javascript 取值更接近的数组,javascript,jquery,arrays,sorting,Javascript,Jquery,Arrays,Sorting,我有一组数据,我使用一个表单获取这些数据,并使用这些数据调用网站的api。作为一个单一值,它是否进行了任何检查,并将该值用于调用,该调用返回一个值,该值包含我必须减去表单上输入的值的百分比 GET /getvalues?id={FORMNUMBER} RETURN { "id": {FORMVALUE} "percent": 45 } 现在,在某些情况下,api返回多个值,并且它们没有与每个值相关联的标识符,所以这很容易,因为它们只需要去获取标识符的值 GET /getvalues?

我有一组数据,我使用一个表单获取这些数据,并使用这些数据调用网站的api。作为一个单一值,它是否进行了任何检查,并将该值用于调用,该调用返回一个值,该值包含我必须减去表单上输入的值的百分比

GET /getvalues?id={FORMNUMBER}

RETURN
{
  "id": {FORMVALUE}
  "percent": 45
}
现在,在某些情况下,api返回多个值,并且它们没有与每个值相关联的标识符,所以这很容易,因为它们只需要去获取标识符的值

GET /getvalues?id={FORMNUMBER}

RETURN
{
  "id": {FORMVALUE},
  "values" : [
               {
                 "value": 18,
                 "percent": 10
               },{
                 "value": 45,
                 "percent": 24
               },{
                 "value": 57,
                 "percent": 32
               }
  ]
}
在上一个示例中,如果我表格中的值为21,则应取18,因为这两个数字之间的差值较小;但如果值为40,则我也应取18,因为它没有超过45

我需要在一个值的旁边取一个比这个值更大或更低的值,这个值取这个形式,并且只有我在整个数组中出现,对数组进行减法和较小的值相加,捕捉较低值的结尾。有没有比这更简单的方法?。我想我只能用一个很长很复杂的函数来实现它,而且可能效率很低。谢谢。

只要反转数组(
array.reverse()
),那么函数就非常简单了

var values = [{"value": 18, "percent": 10}, {"value": 45, "percent": 24}, {"value": 57, "percent": 32}].reverse();
var form_value = 40;
var percent;

for ( index = 0; index < values.length; ++index ) {
  if ( form_value >= values[index].value ) {
    percent = values[index].percent;
    break;
  }
}

console.log( percent ); // 10
var values=[{“value”:18,“percent”:10},{“value”:45,“percent”:24},{“value”:57,“percent”:32}];
var形式_值=40;
风险值百分比;
对于(索引=0;索引=值[索引].value){
百分比=值[索引]。百分比;
打破
}
}
console.log(百分比);//10

谢谢您的回答。代码运行正常,我试过了。我只发现了一个问题,我将minor的有序数据放到major中以更好地解释,但是api不必返回它们,所以可以尝试以这种方式返回它们,但事实并非如此。例如,如果我更改以下值的值,它将停止正常工作->[{“值”:18,“百分比”:10},{“值”:57,“百分比”:32},{“值”:45,“百分比”:24}]