2017-07-18 51 views
0

我有以下包含json數據的對象。js(nodeJS)解析基於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

使用下面的代碼,您可以找到項目的最大值和當前價格。我認爲這個代碼可以更好地優化,因爲我循環了兩次。

演示: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]) 
+0

我只需要最高的價格從「實際」日期,以上示例將意味着像'價格最高輸出:642'。希望你能理解? – seikzer

+0

實際日期是什麼意思?所以你不需要價格項目明智嗎?\ – Vineesh

+0

我只需要從我使用實際日期的if條件過濾的所有項目中獲得「最高」價格(只有最高價格)。對於上面的exmaple代碼將是642.只記下最新的價格。 – seikzer