具有多列的数组中最接近的最高值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有多列的数组中最接近的最高值相关的知识,希望对你有一定的参考价值。

我想测试一个输入字段中的累积值(qazxsw poi),其中数组中的qazxsw poi值最接近。

所以,我们的目标是找到与var goal最接近的最高值。

['size']

我能够得到我想要的所有价值。然而,当目标是size 95之类的时候,我的脚本会从var variants = [ { value: "128428226", size: "50 ", price: 3.72, priceIncl: 4.5 }, { value: "128428229", size: "100 ", price: 5.5, priceIncl: 6.65 }, { value: "128428232", size: "150 ", price: 7.27, priceIncl: 8.8 } ] var goal = 95; var closest = variants; var closestPrice = ''; var closestPriceIncl = ''; var closestVal = ''; $.each(variants, function(){ if (closest['size'] == null || Math.abs(this['size'] - goal) < Math.abs(closest['size'] - goal)) { closest = this; closestPrice = closest['price']; closestPriceIncl = closest['priceIncl']; closestVal = closest['value'] } }); 中选择值。所以实际上当目标是51时,它应该选择100等。

我真的找不到办法做到这一点。我找到了一些使用函数的其他答案,但后来我没有得到如何获得其他值。 (我只需要找到最接近的最高值。)任何帮助都非常感谢。

答案

如果我正确理解您的问题,以下代码就足够了:

75

两个定义谓词是最接近的变体具有大于目标的大小,并且大小之间的差异应该是最小的。

另一答案

尝试一下这个。我想这一定是你要做的。

size: "50"
另一答案

您可以使用elemnt的绝对delta和先前的stire临时结果,如果更小,则推送一个新数组,否则检查delta是否相同,然后将实际项目推送到结果集。

结果返回一个包含最近项的数组。

也许这是一个好主意,并且可以通过附加值的空间来清理数据,例如 var variants = [ { value: "128428226", size: "50 ", price: 3.72, priceIncl: 4.5 }, { value: "128428229", size: "100 ", price: 5.5, priceIncl: 6.65 }, { value: "128428232", size: "150 ", price: 7.27, priceIncl: 8.8 } ]; var goal = 51; var closest = null ; var minDiff = Number.MAX_SAFE_INTEGER; for(var index in variants){ var valueObject = variants[index]; if(valueObject.size > goal){ var diff = Math.abs(valueObject.size - goal); if(diff < minDiff){ closest = valueObject; minDiff = diff; } } } console.log(minDiff); console.log(closest);

var variants = [
          { value: "128428226", size: "50 ", price: 3.72, priceIncl: 4.5 },
          { value: "128428229", size: "100 ", price: 5.5, priceIncl: 6.65 },
          { value: "128428232", size: "150 ", price: 7.27, priceIncl: 8.8 }
    ];

var arr = Object.keys(variants).map(function(k) { return parseInt(variants[k]['size']) });

function closest(array,num){
    var i=0;
    var minDiff=1000;
    var ans;
    for(i in array){
         var m=Math.abs(num-array[i]);
         if(m<minDiff){ 
                minDiff=m; 
                ans=array[i]; 
            }
      }
    return ans;
}

console.log(closest(arr,75))

以上是关于具有多列的数组中最接近的最高值的主要内容,如果未能解决你的问题,请参考以下文章

C++:查找数组中最接近的值

Xamarin 表单:显示和绑定具有多行和多列的列表/网格的数据

循环遍历具有多列和多行的数组

用matlab如何求出一个数组中最接近某个数的两个数的下标??

求一个数组中最接近平均值的数,用java编程

在php中给定一个数,求数组中最接近的一个值。