2013-11-28 47 views
-4

这是一个关闭的问题using jquery, how would i find the closest match in an array, to a specified numberjavascript中最接近匹配的返回数组项目

但我需要帮助的逻辑。我想传递一个值给getComparison并让它返回最近的描述。

function getComparison(measure) { 

    var key; 
    var measures = []; 
    measures[1]  = 'Height of Gloucester old spot pig'; 
    measures[2]  = 'Length of a racehorse'; 
    measures[3]  = 'Width of a cricket pitch'; 
    measures[4]  = 'Length of a salt water crocodile'; 
    measures[5]  = 'Length of a large family car'; 
    measures[6]  = 'Length of a Luton Van'; 
    measures[7]  = 'Height of Cheltenham War Memorial'; 
    measures[10] = 'Length of a killer whale'; 
//etc 
    var closest = null; 
    jQuery.each(measures, function(){ 
     if (closest == null || Math.abs(this - measure) < Math.abs(closest - measure)) { 
     closest = this; 
     } 
    }); 
    console.log(closest); 
    return closest; 
} 
+8

...这是一个笑话,对吧? – JJJ

+0

规模数字似乎不见了,或者是1-10呢?它们应该像那样是线性的吗? – Halcyon

+0

不,它是零星的,因为没有完整的长度列表,即没有匹配的8米或9米长度,所以我想返回最近的。 – Jeepstone

回答

2

您需要比较长度,而不是字符串。

var closest = null; 
var closest_dist; 
$.each(measures, function(length) { 
    var dist = Math.abs(length - measure); 
    if (closest === null || dist < closest_dist) { 
     closest = length; 
     closest_dist = dist; 
    } 
}); 
return measures[closest]; 
+0

我在这个问题上没有看到任何长度。 – Andy

+0

@Andy长度是他的数组中的索引。 – Barmar

+0

正确。谢谢@Barmar。完美的作品。 – Jeepstone