从javascript中的Key / Value变量中获取值

时间:2014-11-09 11:00:14

标签: javascript jquery

请考虑这种情况:

我有一个像这样的Key / Value变量:

var dict = {"78": "X",
            "12": "G",
            "18": "R",
            "67": "U",
            "68": "O",
            "30": "P"}

我有一个字符串,我想检查我的字符串中是否存在我的变量字母。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

收集对象键值并使用它们来创建正则表达式。然后使用.test(yourString)

var myStr = "Group";
new RegExp(Object.keys(dict).map(function (c) { return dict[c]; }).join("|"))
   .test(myStr); // true

另一种方法是简单地迭代对象:

var found = false;
for (var k in dict) {
   if (myStr.indexOf(dict[k]) !== -1) {
      found = true;
      break;
   }
}

if (found) {
   // letter found
}

答案 1 :(得分:1)

一种可能的方法:

var contains = Object.keys(dict).some(function(key) {
  return someStr.indexOf(dict[key]) !== -1;
});

换句话说,迭代集合,在每一步检查字符串中是否存在测试字符(someStr)。如果是,立即停止迭代(这就是Array.prototype.some的工作原理)。

另一种方法是构建一个字符类正则表达式,然后将其用于字符串:

var pattern = RegExp('[' + Object.keys(dict).map(function(k) { 
  return dict[k]; 
}).join('') + ']');
var contains = pattern.test(someStr);

如果测试的字符串通常包含来自dict的字符,则第二种方法稍好一些。将此解决方案扩展为不区分大小写的搜索也很容易 - 只需添加'i'字符串作为RegExp调用的第二个参数。

需要注意的是,您必须在传递给RegExp构造函数(例如反斜杠)的字符串中转义将被视为meta的字符。如果字典中没有这样的字符,那么这不是问题。

答案 2 :(得分:1)

可以使用以下方法完成:

str = "test"; 
isExists = false;
for(var key in dict){
  isExists = str.indexOf(dict[key]) !== -1;
  if(isExists)
    break;
};
console.log(isExists);