我正在尝试在数组中找到大于输入值的最小值。
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()
,但我真的不懂如何使用它。此外,我需要向后兼容旧版浏览器。
更新了示例代码,因为它还需要工作在"无序"数组中的项目。这些物品并不总是按升序排序。
答案 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);
答案 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;
});