2015-09-10 65 views
0

我有一個JSON對象構造爲這樣:過濾JSON具有獨特的鍵/值

var theSchools = { 
    Bradley University: "bru", 
    Knox College: "knox", 
    Southern Illinois University Edwardsville: "siue",… 
} 

我所試圖實現的是檢索的關鍵,在這種情況下,學校名稱的方式,通過提供價值,學校的代碼。「

它不會出現,我就能有這樣的正確調整,即

var theSchools = [ 
    { 
    schoolName:"Bradley University", 
    schoolCode: "bru"  
    } 
    { 
    schoolName: "Knox College", 
    schoolCode: "knox" 
    } 
] 

所以我那種堅持我得到了什麼。

我知道下面的代碼是不正確的,但它本質上是我想達到的目標:

if(getParameterByName("schoolId").length>0){ 
    var schoolid = getParameterByName("schoolId"); 
    var schoolName= theSchools.schoolid;   

    jQuery("h1").after("<h2>Welcome to <strong>"+schoolName+"</strong></h2>") 
} 

回答

2

可以使用for...in loop遍歷對象中的每個屬性,如果返回值的屬性名稱比賽:

var theSchools = { 
 
    "Bradley University": "bru", 
 
    "Knox College": "knox", 
 
    "Southern Illinois University Edwardsville": "siue" 
 
}; 
 

 
function findSchool(code) { 
 
    for (var s in theSchools) { 
 
     if (theSchools[s] === code) 
 
      return s; 
 
    } 
 
    return null; 
 
} 
 

 
document.getElementById('school').innerText = findSchool('knox');
<div id="school"></div>

0

的問題是,如果你真的需要這種方式(見nswer @James),這裏是你要求的:

var theSchools = { 
    "Bradley University": "bru", 
    "Knox College": "knox", 
    "Southern Illinois University Edwardsville": "siue" 
}, schoolMap = {}; 

for (var schoolName in theSchools) { 
    var code = theSchools[ schoolName ]; 
    schoolMap[ code ] = schoolName; 
} 

document.body.innerHTML = schoolMap["bru"]; // Bradley University 
0

你不必使用for循環來檢查屬性是否存在。使用hasOwnProperty方法。

if (theSchools.hasOwnProperty("Knox College")) { 
    //do stuff 
} 

工作例如:https://jsfiddle.net/7q9czdpc/

+0

你需要知道屬性的名稱才能做到這一點。 OP知道財產(學校代碼)的價值並需要找到其名稱。 –

+0

我的不好。 以下是您所需要的: http://jsfiddle.net/maT7ew/y4jhyhh3/1/ –