2014-11-09 3 views
-1

Пожалуйста, рассмотрим следующий сценарий:Получить значения из переменной/Значение ключа в JavaScript

У меня есть переменная Key/Value, как это:

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

У меня есть строка, что я хочу, чтобы проверить, есть ли буква моей переменной существует в моей строке. Как я могу это сделать?

ответ

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.

Предостережение заключается в том, что вам придется избегать символов, которые будут считаться meta внутри строки, переданной в конструктор RegExp (например, обратная косая черта). Если в словаре нет таких символов, это не проблема.

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

Это можно сделать с помощью следующего:

str = "test"; 
isExists = false; 
for(var key in dict){ 
    isExists = str.indexOf(dict[key]) !== -1; 
    if(isExists) 
    break; 
}; 
console.log(isExists); 
Смежные вопросы