var substringMatcher = function(strs) { return function findMatches(q, cb) { var matches, substringRegex; // an array that will be populated with substring matches matches = []; // regex used to determine if a string contains the substring `q` substrRegex = new RegExp(q, 'i'); // iterate through the pool of strings and for any string that // contains the substring `q`, add it to the `matches` array $.each(strs, function(i, str) { if (substrRegex.test(str)) { matches.push(str); } }); cb(matches); }; }; var products = ['Abstracting The Landscape.','Blossoms Walk','Bluebells And Forget-Me-Knots','Breathe In And Believe','Colours Of The Land','Confetti Field','Daisy Dip','Dappled Earth','Dreams Seeded In Winter 1','Dreams Seeded In Winter 2','Elegance','Endless Light','Gulls Call','Hiding Hollyhocks','Lavender Fields','Loves Me, Loves Me Not.','Meadow Hive','Meadow Home','mmmm','nnnnn','painting','Sea Mist','Secret Wild Garden','Small Works Placeholder - more items arriving soon','ssss','Through The Grasses','Top Of The Bay','Towards The Tide','Wild Daisy Meadow','Wild Flower Path','Wild Grasses','Within Bluebell Wood','Within The Trees','Within Wild Grasses','xxx','zzzzz' ]; var productsIDs = [ ]; $('#our-products .typeahead').typeahead({ hint: true, highlight: true, minLength: 1 }, { name: 'products', limit: 40, source: substringMatcher(products) });