如何检查字典中的特定字符串?

我有一本字典,如:

a = {"staticData":['----','Blue','Green'], "inData":['Indatahere','----','----']}

我怎么能发现,如果字典包含“----”,在任何键的值。
任何Javascript功能?
编辑:如果案件是这样的呢?

a = {"staticData":[], "inData":['Indatahere','----','----']}

它给这个错误:

TypeError: a[elem].indexOf is not a function

代码如下:

var a = {"staticData":['----','Blue','Green'], "inData":['Indatahere','----','----']};

for(var key in a){
    var value = a[key];
    for(var i=0; i<value.length; i++){
        if(value[i] == '----') alert("Found '----' in '" + key + "' at index " + i);
    };
}

编辑:改变数组迭代到normal方式后评论。


如果您完全知道您的价值的嵌套级别,那么可以使用一个快速解决方案(如其他答案中的建议)。

但是,如果您需要深入遍历搜索,则需要递归解决方案,如下所示:

function FindTraverse(data, match)
{
    for (var prop in data)
    {
         if (!data.hasOwnProperty(prop)) continue;
         if (data[prop] == match) return true;
         if (typeof data[prop] == 'object' && FindTraverse(data[prop], match)) return true;
    }

    return false;
}

例子:

FindTraverse({a:'Foo',b:'Bar'}, 'Bar') // true
FindTraverse(['Foo','Bar'], 'Bar') // true
FindTraverse([{name:'Foo'},{name:'Bar'}], 'Bar') // true
FindTraverse({a:{name:'FooBar'},b:'Bar'}, 'FooBar') // true

但是,如果您正在寻找更彻底的解决方案,请使用像jsTraverse这样的框架


使用indexOf搜索对象中的每个数组:

for (elem in a)
{
    if (a[elem].indexOf("----") != -1)
       alert('---- found at ' + a[elem]);
}

编辑对于此错误: TypeError: a[elem].indexOf is not a function浏览器可能认为空元素为非字符串类型TypeError: a[elem].indexOf is not a function ; 非字符串类型没有indexOf方法。

这段代码检查数组元素的长度(如果元素在解释indexOf函数之前是空的。

for (elem in a)
{
    if (a[elem].length > 0 && a[elem].indexOf("----") != -1)
       alert('---- found at ' + a[elem]);
}

如果您希望支持IE <9,请参阅此帖以有条件地向Array对象添加indexOf定义。 这篇文章还提到了一个Jquery的选择。

上面提到的SO帖子列出了Mozilla版本的indexOf函数。

if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length >>> 0;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}
链接地址: http://www.djcxy.com/p/18969.html

上一篇: How to check for specific string in a dictionary?

下一篇: Why indexOf in javascript not working?