2009-08-31 75 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函数来检查对象是否具有直接定义的属性。