我有以下代码可以正常工作: -
$.getJSON("shipping.json")
.done(function(data) {
getUniqueCountries = function() {
var countries = [];
$.each(data.Services.intl.en, function( i, item ) {
if (countries.length==0) {
countries += item.countries;
}
else
{
countries += "," + item.countries;
}
});
}
})
但是,我想制作$ .each动态的第一部分,因为这可能是基于预定义变量的3种可能性之一,例如。
var foo = "intl"
所以新行应为: -
$.each(data.Services.foo.en, function( i, item )
我可以添加另一行代码并使用一个工作正常的eval,但要明白这不是最佳实践。即。
var foo = "intl";
var bar = eval("data.Services." + foo + ".en");
$.each(bar, function( i, item )
我尝试过使用JSON.parse(似乎是google上流行的解决方法)而不是eval,即
var bar = JSON.parse("data.Services." + foo + ".en");
但是收到错误:
'意外的令牌d'。
如果需要,可以使用JSON文件的片段: -
{
"Services": {
"intl": {
"en": [
{
"service": "PREMIER",
"countries": "United Kingdom",
"date": "Thursday 24th 10:00"
}
]
}
}
}
所以我想知道如何将变量foo传递给JavaScript以获取正确的数据而不会出错,不使用Eval函数,或者我最好使用Eval函数吗?
提前感谢您提供任何帮助
答案 0 :(得分:1)
如果我理解正确,您应该能够执行以下操作:
$.each(data.Services[foo].en, function( i, item ) {
if (countries.length==0) {
countries += item.countries;
}
else
{
countries += "," + item.countries;
}
});
可以访问javascript对象中的属性,就像访问数组中的特定键一样。例如,您可以执行window.location或window [" location"]
希望这有帮助
答案 1 :(得分:0)
实际上相当简单。 JavaScript支持使用[]
表示法的动态对象键:
data.Services[foo].en // Where foo = 'intl' or something.