2017-07-06 91 views
0

使用解析的json中的鍵值檢索值我試圖從我的JSON數據(下面)中使用傳入的區域和房屋類型參數獲取平均房價。 我很好,在傳入的'regionName'中進行迭代和匹配,然而我爲了匹配傳入的變量而努力地在房屋類型(我相信它們是數據中的鍵) 'literalHouseType',目的是獲得那個房子類型的價格。 正如你可能知道的那樣,該函數一直工作到它在第一個循環中的區域相匹配,然後我卡住了。 我不是一個狂熱的程序員,所以任何類型的幫助都會很棒。提前致謝。使用jquery/javascript從使用jquery/javascript

var jSonData = JSON.stringify([ { 
"Region_Name": "England", 
"Detached_Average_Price": "357425.4953", 
"Semi_Detached_Average_Price": "219615.157", 
"Terraced_Average_Price": "190095.3402", 
"Flat_Average_Price": "222355.8556" }, 

{"Region_Name": "Scotland", 
"Detached_Average_Price": "252491.6457", 
"Semi_Detached_Average_Price": "152351.671", 
"Terraced_Average_Price": "121237.8809", 
"Flat_Average_Price": "104417.6462" } 

功能用於:

var jSondata = jQuery.parseJSON(jSonData); 

$(document).ready(function() { 
GetAveragePriceByHouseTypeAndRegion("Detached_Average_Price", "England"); 
}); 

function GetAveragePriceByHouseTypeAndRegion(literalHouseType, regionName) { 

for (var i = 0; i < jSondata.length; i++) { 
    if (jSondata[i].Region_Name === regionName) { 

     for (var j = 0; j < Object.keys(jSondata[i]).length; j++) {     
      if (Object.keys(jSondata[i]).value === literalHouseType) { 
      //stuck here.. 
      } 
     } 
    }; 
} 
+0

什麼'literalHouseType'的例子價值? – smarx

+0

嗨,我已更新片段 – user1996641

回答

1

假設literalHouseType將看起來像"Detached""Semi_Detached"

var data = [{ 
 
    "Region_Name": "England", 
 
    "Detached_Average_Price": "357425.4953", 
 
    "Semi_Detached_Average_Price": "219615.157", 
 
    "Terraced_Average_Price": "190095.3402", 
 
    "Flat_Average_Price": "222355.8556" 
 
    }, 
 

 
    { 
 
    "Region_Name": "Scotland", 
 
    "Detached_Average_Price": "252491.6457", 
 
    "Semi_Detached_Average_Price": "152351.671", 
 
    "Terraced_Average_Price": "121237.8809", 
 
    "Flat_Average_Price": "104417.6462" 
 
    } 
 
]; 
 

 
function getAveragePriceByHouseTypeAndRegion(literalHouseType, regionName) { 
 
    for (var i = 0; i < data.length; i++) { 
 
    if (data[i].Region_Name === regionName) { 
 
     return data[i][literalHouseType + "_Average_Price"]; 
 
    } 
 
    } 
 
} 
 

 
console.log(getAveragePriceByHouseTypeAndRegion("Semi_Detached", "Scotland")); // 152351.671

EDIT

基於問題的編輯,它看​​起來像像Detached_Average_Price字符串被傳遞作爲literalHouseType,所以代碼稍微簡單:

var data = [{ 
 
    "Region_Name": "England", 
 
    "Detached_Average_Price": "357425.4953", 
 
    "Semi_Detached_Average_Price": "219615.157", 
 
    "Terraced_Average_Price": "190095.3402", 
 
    "Flat_Average_Price": "222355.8556" 
 
    }, 
 

 
    { 
 
    "Region_Name": "Scotland", 
 
    "Detached_Average_Price": "252491.6457", 
 
    "Semi_Detached_Average_Price": "152351.671", 
 
    "Terraced_Average_Price": "121237.8809", 
 
    "Flat_Average_Price": "104417.6462" 
 
    } 
 
]; 
 

 
function getAveragePriceByHouseTypeAndRegion(literalHouseType, regionName) { 
 
    for (var i = 0; i < data.length; i++) { 
 
    if (data[i].Region_Name === regionName) { 
 
     return data[i][literalHouseType]; 
 
    } 
 
    } 
 
} 
 

 
console.log(getAveragePriceByHouseTypeAndRegion("Semi_Detached_Average_Price", "Scotland")); // 152351.671

EDIT 2

當然,如果你可以重塑你的數據,這更容易:

var data = { 
 
    "England": { 
 
    "Detached_Average_Price": "357425.4953", 
 
    "Semi_Detached_Average_Price": "219615.157", 
 
    "Terraced_Average_Price": "190095.3402", 
 
    "Flat_Average_Price": "222355.8556" 
 
    }, 
 
    "Scotland": { 
 
    "Detached_Average_Price": "252491.6457", 
 
    "Semi_Detached_Average_Price": "152351.671", 
 
    "Terraced_Average_Price": "121237.8809", 
 
    "Flat_Average_Price": "104417.6462" 
 
    } 
 
}; 
 

 
function getAveragePriceByHouseTypeAndRegion(literalHouseType, regionName) { 
 
    return data[regionName][literalHouseType]; 
 
} 
 

 
console.log(getAveragePriceByHouseTypeAndRegion("Semi_Detached_Average_Price", "Scotland")); // 152351.671

+0

已更新,謝謝 – user1996641

+0

查看我的更新回答。 – smarx

+0

公平戲smarx是一個快速回復.. 所以,第一個選項像一個魅力工作,第二個更重構一個給了我一個錯誤的回報: jSondata [regionName] [literalHouseType]; << [literalHouseType]報告'Uncaught TypeError:無法讀取屬性'Detached_Average_Price'未定義' – user1996641