JQuery ...如何访问字典中大于值的最小键

时间:2014-03-21 22:28:43

标签: jquery arrays

我正在尝试在数组中找到大于输入值的最小值。

var qty = 6;
var bulkPricing = [
    { max: 5, price: 10.25 },
    { max: 1, price: 11.95 },
    { max: 15, price: 9.25 },
    { max: 35, price: 9.00 },
    { max: 250, price: 8.69 },
    { max: 75, price: 8.87 },
    { max: 125, price: 8.76 },
];

如何找到MAX的最小值大于Quantity的记录(在这种情况下,Max = 15的记录,价格= 9.25)

我遇到了.filter(),但我真的不懂如何使用它。此外,我需要向后兼容旧版浏览器。

更新了示例代码,因为它还需要工作在"无序"数组中的项目。这些物品并不总是按升序排序。

2 个答案:

答案 0 :(得分:1)

var result = $(bulkPricing).filter(function(_,el) { 
    return el.max == Math.min.apply(Math, $.map(bulkPricing, function(el) {
        return el.max > qty ? el.max : Infinity
    }));
}).get(0);

FIDDLE

答案 1 :(得分:0)

使用for循环和if语句:

for (var i = 0; i < bulkPricing.length; i++) {
    if (bulkPricing[i].max > qty) {
        console.log(bulkPricing[i].max, "is bigger than", qty);
        break;
    }
}

如果数组没有排序,那么你可以这样做(运行循环之前)

bulkPricing.sort(function(a, b) {
    return a.max - b.max;
});