我有以下代码,可以正常工作:-
$.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 (这似乎是谷歌上流行的解析方式)而不是 eval,即
var bar = JSON.parse("data.Services." + foo + ".en");
但出现错误:
'Unexpected token d'.
JSON 文件的片段(如果需要):-
{
"Services": {
"intl": {
"en": [
{
"service": "PREMIER",
"countries": "United Kingdom",
"date": "Thursday 24th 10:00"
}
]
}
}
}
所以我想知道如何在不使用 Eval 函数的情况下将变量 foo 传递到 JavaScript 中以获得正确的数据而不出现错误,或者我到底可以使用 Eval 函数吗?
预先感谢您的帮助
最佳答案
如果我理解正确,您应该能够执行以下操作:
$.each(data.Services[foo].en, function( i, item ) {
if (countries.length==0) {
countries += item.countries;
}
else
{
countries += "," + item.countries;
}
});
可以像访问数组中的特定键一样访问 javascript 对象中的属性。例如,您可以执行 window.location 或 window["location"]
希望这有帮助
关于javascript - 如何将变量传递到 JSON 搜索循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33938473/