Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 21.03.2015, 23:37
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Shasoft
Добавил и ваш вариант. Он не находит вариант "Грач,ВорОна,Сорока" если ввести маску "в".
это решается просто

А вот это как решить?

кроме того
this.test = function(text) {
    return text
        .toLowerCase()
        .split(/[\s,]+/)
        .some(function(word) {
            return word.slice(0, n.length) === n;
        });
};

(не проверял)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 21.03.2015 в 23:42.
Ответить с цитированием
  #12 (permalink)  
Старый 22.03.2015, 10:03
Аватар для Shasoft
Профессор
Отправить личное сообщение для Shasoft Посмотреть профиль Найти все сообщения от Shasoft
 
Регистрация: 03.03.2009
Сообщений: 156

nerv_,
уговорили. Ваш вариант лучше, так как в моей если в строке есть управляющие символы типа '(', то фигня получается. Т.е. нужно экранировать их. Так что перешел на ваш вариант.
Ответить с цитированием
  #13 (permalink)  
Старый 22.03.2015, 10:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126


так и не понял что быстрее
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));

Последний раз редактировалось рони, 22.03.2015 в 11:24.
Ответить с цитированием
  #14 (permalink)  
Старый 22.03.2015, 11:20
Аватар для Shasoft
Профессор
Отправить личное сообщение для Shasoft Посмотреть профиль Найти все сообщения от Shasoft
 
Регистрация: 03.03.2009
Сообщений: 156

На 3-х фразах смысла нет тестировать. Нужно побольше вариантов.
А пример вообще показывает противоположные значения при нескольких запусках.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтр по начальным символам Shasoft Angular.js 9 22.03.2015 09:25
Поиск слова в массиве killex Javascript под браузер 11 14.12.2014 02:37
Выбор случайного слова из списка alerzo Элементы интерфейса 3 19.04.2014 15:46
необходими разделить строку на слова и положить слова в массив при помощи цикла for oneee Общие вопросы Javascript 5 05.09.2012 14:30
Фильтр каталога Nivans Элементы интерфейса 4 15.07.2012 15:27