【问题标题】:Take the array with the value more proximity取值更接近的数组
【发布时间】:2014-12-04 01:10:28
【问题描述】:

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

我需要将更等于或低于此值的值放在拾取表单的值旁边,并且只发生在我通过所有数组执行此操作时,将减法和较小的值添加到数组中,捕获低值结束。有没有更简单的方法呢?我想我只能用一个相当长和复杂的函数来完成它,而且可能效率低下。谢谢。

【问题讨论】:

    标签: javascript jquery arrays sorting


    【解决方案1】:

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

    【讨论】:

    • 谢谢你的回答。代码工作正常,我试过了。我只是发现了一个问题,我把minor到major的有序数据解释得更好,但是api不必返回它们,可以尝试这样返回它们,但事实并非如此。例如,如果我更改以下值的值,它会停止正常工作 -> [{"value": 18, "percent": 10}, {"value": 57, "percent": 32}, {"值”:45,“百分比”:24}]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多