Цитата:
А вот это как решить? :) кроме того this.test = function(text) { return text .toLowerCase() .split(/[\s,]+/) .some(function(word) { return word.slice(0, n.length) === n; }); }; (не проверял) |
nerv_,
уговорили. Ваш вариант лучше, так как в моей если в строке есть управляющие символы типа '(', то фигня получается. Т.е. нужно экранировать их. Так что перешел на ваш вариант. |
:write:
так и не понял что быстрее :) var phrase = ['Есть массив фраз','Грач,ВорОна,Сорока','Вася(Крюков)'], word = ['в']; function oneINother(word,phrase) { function c(d) { return word.some(function(a) { // return (new RegExp("^" + a, "i")).test(d) return d.toLowerCase().slice(0, a.length) === a.toLowerCase(); }) } return phrase.filter(function(a) { return a.split(/[\s,.]+/).some(c) }) }; console.time('test'); oneINother(word,phrase); console.timeEnd('test'); alert(oneINother(word,phrase)); function oneINother2(word,phrase) { function c(d) { return word.some(function(a) { return (new RegExp("^" + a, "i")).test(d) // return d.toLowerCase().slice(0, a.length) === a.toLowerCase(); }) } return phrase.filter(function(a) { return a.split(/[\s,.]+/).some(c) }) }; console.time('test2'); oneINother2(word,phrase); console.timeEnd('test2'); alert(oneINother2(word,phrase)); |
На 3-х фразах смысла нет тестировать. Нужно побольше вариантов.
А пример вообще показывает противоположные значения при нескольких запусках. :) |
Часовой пояс GMT +3, время: 02:58. |