javascript - 如何将变量传递到 JSON 搜索循环?

标签 javascript json

我有以下代码,可以正常工作:-

    $.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/

相关文章:

json - Angular2 Http 后 400

javascript - JSGrid - 加载 JSON 数据 - "Not Found"

javascript - 我的 Json 数组只返回最后一个数组。如何解决?

ruby-on-rails - 未初始化的常量 devise::controllers::internalhelpers

javascript - 如何将json格式的数组数据从jquery返回到html

javascript - 从数组 Angular js中删除未经检查的值

javascript - 主干模型、JSON 和 HTML 表单

javascript - jQuery 延迟链接问题

javascript - 将文本数组转换为数字,查找匹配值并排序

JavaScript 重新加载会中断 cookie 删除