I like your way of doing it. I delved into this a bit, here are a few ways you can think about it:
Some of them are really close, but for the last period some parsing of strings for each case may be required. Pay attention to the latter, since it uses RegExp, it does not require anything to be done for the string:
JsBin example
function findInString(str) { var fruits = ["orange", "banana", "grape"]; return str.split(' ').filter(function(el) { return fruits.indexOf(el) > -1; }).length > 0; } function finderWithReduce(str) { var fruits = ["orange", "banana", "grape"]; var result = false; str.split(' ').reduce(function(a, b) { if (a.indexOf(b) > -1) { result = true; } return a; }, fruits); return result; } function finderWithForEach(str){ var fruits = ["orange", "banana", "grape"]; var result = false; fruits.forEach(function(fruit) { if (str.indexOf(fruit) > -1) { result = true; } }); return result; } function finderWithRegex(str) { var fruits = ["orange", "banana", "grape"]; for (var i = 0; i < fruits.length; i++) { var re = new RegExp(fruits[i], 'gi'); if (str.match(re) !== null) { return true; } } return false; }
source share