js(nodeJS)解析基于JSON的对象(字符串作为标识符)

时间:2017-07-18 05:13:35

标签: javascript json node.js string object

我有以下包含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))中的每个项目,我希望得到“实际”价格,然后获得数组中所有项目的最高价格。

1 个答案:

答案 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])