我有一个像这样的对象数组
var json = [{"price":"30.00","meter":"70"},{"price":"20.00","meter":"130"},{"price":"10.00","meter":"170"}];
如何检查此之间的数量并计算价格。我写了循环,但它无法正常工作。
var mQty = 2.52;
var jCnt = json.length;
//alert(jCnt);
for (var j = 0; j < jCnt - 1; j++) {
nextj = j + 1;
//alert(nextj;
first = json[j].meter;
if (json[nextj].meter != '') {
second = json[nextj].meter - 1;
} else {
second = '';
}
if (mQty >= first && mQty <= second) {
//bettween meter from json obj
alert('if condition');
alert(json[j].price);
} else {
//under 70 meter
alert('else condition');
alert('40.00');
}
}
答案 0 :(得分:1)
我想我现在明白了这个问题。你的价格是每米价格(我猜),订购的米数越多,每米的价格就越便宜。您想要找到给定长度的匹配价格。
由于您的价格按升序排序,因此逻辑非常简单:
示例:
var price;
if (qty < prices[0].meter) {
price = defaultPrice;
}
else {
for (var i = 1; i <= prices.length; i++) {
price = prices[i - 1].price;
if (prices[i] && prices[i].meter > qty) {
break;
}
}
}
如果您将默认价格作为第一个元素添加到数组中:
var prices = [{price: defaultPrice, meter: 0}, ...];
然后你可以省略整个if...else
语句:
var price;
for (var i = 1; i <= prices.length; i++) {
price = prices[i - 1].price;
if (prices[i] && prices[i].meter > qty) {
break;
}
}