我有这样的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 ),很明显您正在尝试做什么。