取值更接近的数组

Take the array with the value more proximity

本文关键字:数组 接近      更新时间:2023-09-26

我有一组数据,我使用表单获取它,并使用这些数据调用网站的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