循环访问JSON对象检查键值

时间:2014-01-28 20:28:34

标签: jquery

尝试运行以下代码

var superGroup = $.parseJSON(data);
$.each(superGroup, function(idx, obj) {
            if (idx.contains("Addr_Line")) {
                if (obj != null) {
                    currentAddress.push(obj);
                }
            }
        });

其中supergroup是一个带有一堆属性的JSON对象,我基本上只想在这个包含“addr_line”的对象中添加属性的值。在chrome中我注意到

上有一个JS错误
idx.contains()

说idx不包含方法

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

这是因为Chrome不支持String.prototype.contains():https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/contains

这样做:

$.each(superGroup, function(idx, obj) {
    if (idx.indexOf('Addr_Line') !== -1) {
        if (obj != null) {
            currentAddress.push(obj);
        }
    }
});

您可能还想检查idx是否为string

$.each(superGroup, function(idx, obj) {
    if (typeof idx == 'string' && idx.indexOf('Addr_Line') !== -1) {
        if (obj != null) {
            currentAddress.push(obj);
        }
    }
});

答案 1 :(得分:1)

根据the docs for String.contains,您可以通过添加以下代码来填充此仅限Firefox的方法:

if (!('contains' in String.prototype)) {
  String.prototype.contains = function(str, startIndex) {
    return -1 !== String.prototype.indexOf.call(this, str, startIndex);
  };
}