获取值更接近的数组

时间:2014-12-04 01:10:29

标签: javascript jquery arrays sorting

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

我需要在接收表单的值旁边取更多等于或低于此值的值,并且仅在我通过所有数组执行此操作时,将减法和较小值添加到数组中,捕获价值较低的结束。有没有更简单的方法呢?我想我只能使用功能很长很复杂,而且可能效率低下。感谢。

1 个答案:

答案 0 :(得分:0)

只需反转数组(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