2009-08-31 145 views
1

我有這個JSON的表情列出掃描通過JSON技術

var smiliesList = { 
"sm-1":":)", 
"sm-2":":(", 
"sm-3":";)" 
} 

有很多比3其實更多。

在代碼的其他部分,我使用smiliesList [「sm-1」]來獲得「:)」。但是,我現在想要得到相反的結果。我有一個文本字符串,我想通過整個smiliesList並用「sm-1」替換「:)」等等。這意味着使用smiliesList [「:)」]來獲得「sm-1」。

所以有2個部分: 1.如何通過整個JSON? 2.如何獲得相反的變量字符串?

現在有辦法做到這一點嗎?任何解決方法?由於

回答

1

你也可以使用jQuery來幫你出一個更簡單的語法:

var smiliesList = {"sm-1":":)","sm-2":":(","sm-3":";)"} 
$.each(smiliesList, function(index, value){ 

    console.log(index + " " + value); 

}); 

這將輸出到控制檯:

sm-1 :) 
sm-2 :(
sm-3 ;) 
2

可以遍歷對象屬性,使用for...in聲明:

function getKeyByValue (obj, val) { 
    for (var key in obj) { 
    if (obj.hasOwnProperty(key) && obj[key] == val) { 
     return key; 
    } 
    } 
} 

getKeyByValue (smiliesList, ":)"); // sm-1 

你必須careful使用......在時,因爲它通過所有這些都通過原型繼承成員的迭代鏈,因此總是建議通過使用hasOwnProperty函數來檢查對象是否具有直接定義的屬性。