Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.03.2018, 14:01
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Подскажите как правильно выполнить поиск в массиве
Добрый день, у меня есть массив в котором нужно сделать фильтр по определенному слову.
Этот код находит первый массив с совпадением:
var arr = ['Горшок цветов красных','Ваза пеньков синих','Горшки фиолетовые','бумага'];

function findPartial( a, s ){
   for( var i = 0; i < a.length; ++i )
       if( a[i].indexOf( s ) >= 0 ){
             return a[i];
       }
 };

alert(findPartial( arr, "Горш" ));

Нужна примерно такая же функция, но с выводом:
arr = ['Горшок цветов красных','горшки фиолетовые',];

я так понимаю надо заменить .indexOf ?
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2018, 14:06
Аватар для brizing
Интересующийся
Отправить личное сообщение для brizing Посмотреть профиль Найти все сообщения от brizing
 
Регистрация: 08.02.2014
Сообщений: 23

var arr = ['Горшок цветов красных','Ваза пеньков синих','Горшки фиолетовые','бумага'];

function findPartial( a, s ){
   var r = [];
   for( var i = 0; i < a.length; ++i )
       if( a[i].indexOf( s ) >= 0 ){
             r.push(a[i]);
       }
   return r;
 };

alert(findPartial( arr, "Горш" ));
Ответить с цитированием
  #3 (permalink)  
Старый 30.03.2018, 14:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Artur_Hopf,
var arr = ['Горшок цветов красных','Ваза пеньков синих','Горшки фиолетовые','бумага'];

function findPartial( a, s ){
   return a.filter(function(b) {
     return b.indexOf( s ) >= 0
 })
};

alert(findPartial( arr, "Горш" ));
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2018, 14:13
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

alert( ['Горшок цветов красных','Ваза пеньков синих','Горшки фиолетовые','бумага'].filter(function(item){
	return item.indexOf('Горш')>-1;
}).join('; ') );
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2018, 14:16
Аватар для brizing
Интересующийся
Отправить личное сообщение для brizing Посмотреть профиль Найти все сообщения от brizing
 
Регистрация: 08.02.2014
Сообщений: 23

Вам, наверное, нужно ещё приделать toLowerCase к обеим строкам.
Ответить с цитированием
  #6 (permalink)  
Старый 30.03.2018, 14:18
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

brizing,
спасибо, в самый раз
Ответить с цитированием
  #7 (permalink)  
Старый 30.03.2018, 14:19
Аватар для brizing
Интересующийся
Отправить личное сообщение для brizing Посмотреть профиль Найти все сообщения от brizing
 
Регистрация: 08.02.2014
Сообщений: 23

Сообщение от Artur_Hopf Посмотреть сообщение
brizing,
спасибо, в самый раз
Версия рони правильнее.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно реализовать такой функционал? Julian Общие вопросы Javascript 3 16.01.2015 12:34
Подскажите пожалуйста как написать правильно условие alexmixaylov jQuery 6 17.04.2014 16:56
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Подскажите, пжлст, как вывести в тот же документ результат ф-ции? LexXxeL Элементы интерфейса 4 13.05.2009 13:26