Цитата:
А вот это как решить? :) кроме того
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, время: 22:53. |