我有这样的JSON响应:

 var errorLog = "[[\"comp\",\"Please add company name!\"],
                 [\"zip\",\"Please add zip code!\"],
                  ...


我正在像这样反序列化:

 var log = jQuery.parseJSON(errorLog);


现在,我可以访问像这样的元素:

 log[1][1] > "Please add company name"


题:
如果我有第一个值比较,是否可以通过以下方法直接获取第二个值:

 log[comp][1]


而不遍历整个数组。

感谢帮助!

最佳答案

有两个方法可以做到这一点,但都不能避免循环。第一种是每次访问项目时都要遍历数组:

var val = '';
for (var i = 0; i < errorLog.length; i++) {
    if (errorLog[i][0] === "comp") {
        val = errorLog[i][1];
        break;
    }
}


另一种方法是将数组放入对象中,并使用对象符号对其进行访问。

var errors = {};
for (var i = 0; i < errorLog.length; i++) {
    errors[errorLog[i][0]] = errorLog[i][1];
}


然后,您可以使用errors.comp访问相关值。

如果您只看一次,第一个选择可能会更好。如果您看起来不止一次,那么最好使用第二个系统,因为(a)您只需要执行一次循环,这样效率更高;(b)您无需重复循环代码,(c ),很明显您正在尝试做什么。

10-02 19:06