我有以下包含json数据的对象。
{
"item1": {
"2017-07-17": {"price": 67},
"2016-07-16": {"price": 453},
"2016-07-15": {"price": 435},
...
},
"item2": {
"2017-07-17": {"price": 642},
"2016-07-16": {"price": 643},
"2016-07-15": {"price": 593},
...
},
...
}
要解析此代码,我使用:
highest_price = Infinity;
for (var item in prices) {
if(keys.includes(item)){
console.log(item + " found");
}
}
如何才能获得“今天”的“最高”价格? if语句确保我只获得“相关”项目,但如何获取“当前”价格并确保最终我获得所有项目的最高价格。 我的主要问题是如何“只获取”当前的日期属性?
我循环每个项目,之后我检查项目名称是否在数组中。对于此数组if(keys.includes(item))
中的每个项目,我希望得到“实际”价格,然后获得数组中所有项目的最高价格。
答案 0 :(得分:0)
使用以下代码,您可以找到物品的最高和当前价格。我认为这个代码可以更好地优化,因为我循环两次。
演示:https://jsfiddle.net/vineeshmp/3afz92yr/2/
var prices = {
"item1": {
"2017-07-17": {"price": 800},
"2016-07-16": {"price": 453},
"2017-07-19": {"price": 10},
"2016-07-15": {"price": 435}
},
"item2": {
"2017-07-17": {"price": 622},
"2016-07-16": {"price": 643},
"2016-07-15": {"price": 593}
}
};
var items = Object.keys(prices);
var dateprices = {};
items.forEach(function(item){
if(keys.includes(item)){
for(var k in prices[item]){
dateprices[k] = dateprices.hasOwnProperty(k)?dateprices[k]:[];
dateprices[k].push(prices[item][k].price);
}
}
})
Object.entries(dateprices).forEach(function([key, value]){
console.log(key);
dateprices[key].sort(function(a,b){
return b - a;
});
})
alert("Highest price on 2017-07-17 is "+dateprices["2017-07-17"][0])