 
			
				26.03.2019, 10:46
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2018 
					
					
					
						Сообщений: 278
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Фильтр таблицы из массива, для получения нескольких совпадений.
			 
			
		
		
		
		Добрый день. Подскажите как можно отфильтровать таблицу, если нужно получить несколько строк? 
Например есть массив:
 
var array= {
	'cero':['234', '153', '321' ,'123'],
	'uno':['654', '344'],
    'dos':['190', '235', '111'],
};
Например выбрали мы array['dos'] и таблица выдала строки с совпадениями.
 
Сейчас же используется обычный поиск:
 
$("#myInput").on("keyup", function() {
        var value = $(this).val().toLowerCase();
        $("#myTable tr").filter(function() {
            $(this).toggle($(this).text().replace(/ё/gi, 'е').toLowerCase().indexOf(value.replace(/ё/gi, 'е')) > -1);
        });
});
Может кто подскажет ссылку, где посмотреть можно поиск в таблице через массив. Найти не могу.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.03.2019, 11:11
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Попробуйте так: 
var array = { //это ни разу не массив
    'cero': ['234', '153', '321', '123'],
    'uno': ['654', '344'],
    'dos': ['190', '235', '111'],
};
$("#myInput").on("keyup", function() {
    const searchValues = array.dos;
    function normalizeValue = function(string) {
        return string.toLowerCase().replace(/ё/g, 'е');
    };
    $("#myTable tr").hide().filter(function() {
        return searchValues.some(function(value) {
            return normalizeValue(this.textContent).indexOf(
                normalizeValue(value)
            ) >= 0;
        });
    }).show();
});
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.03.2019, 11:34
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2018 
					
					
					
						Сообщений: 278
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Nexus, 
Попробовал так написать, не получилось
 
var array = { //это ни разу не массив
    'cero': ['234', '153', '321', '123'],
    'uno': ['654', '344'],
    'dos': ['190', '235', '111'],
};
	
	const searchValues = array.dos;
    $("#myTable tr").hide().filter(function() {
        return searchValues.some(function(value) {
			console.log(value);
			return $(this).text().indexOf(value) >= 0;
            //return this.textContent.indexOf(value) >= 0;
        });
    }).show();
Если написать просто return this.textContent.indexOf(value) >= 0; будет жаловаться на indexOf
 Uncaught TypeError: Cannot read property 'indexOf' of undefined
normalizeValue  в данном случае не нужен, поиск только по цифрам, без букв.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Artur_Hopf, 26.03.2019 в 11:47.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.03.2019, 11:50
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2018 
					
					
					
						Сообщений: 278
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		this.textContent пустые идут: 
$("#myTable tr").hide().filter(function() {
        return searchValues.some(function(value) {
			console.log(this.textContent); //все undefined
			console.log($(this).text());  //пусто
        });
    }).show();
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.03.2019, 11:52
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2018 
					
					
					
						Сообщений: 278
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Nexus, 
 Разобрался, спасибо большое, так работает =)
 
var array = { //это ни разу не массив
    'cero': ['234', '153', '321', '123'],
    'uno': ['654', '344'],
    'dos': ['190', '235', '111'],
};
	
const searchValues = array.dos;
$("#myTable tr").hide().filter(function() {
    var test = this;
     return searchValues.some(function(value) {
            return test.textContent.indexOf(value) >= 0;
     });
}).show();
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.03.2019, 13:53
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2018 
					
					
					
						Сообщений: 278
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Подскажите пожалуйста. Как исправить чтобы искало точное совпадение в ячейке? 
Например в массиве есть такое число 3120. Во время поиска оно так же выведет число 2100 если перед ним в другой ячейке в конце есть цифра 3. Как это исправить? 
 
var array = { //это ни разу не массив
    'dos': ['3120']
};
	
const searchValues = array.dos;
$("#myTable tr").hide().filter(function() {
    var test = this;
     return searchValues.some(function(value) {
            return test.textContent.indexOf(value) >= 0;
     });
}).show();
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Artur_Hopf, 26.03.2019 в 13:57.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.03.2019, 14:01
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Artur_Hopf,
 
alert('2100'.indexOf('3120')>=0);
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.03.2019, 14:08
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2018 
					
					
					
						Сообщений: 278
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Nexus, 
 нет, не в том дело. Мы делаем поиск по таблице всей $("#myTable tr") 
допустим перед нашей ячейкой есть такая запись:
 
столбик1   | стоблик 2
Кабинет №3 | 2100
 
И наш поиск будет думать что нашел 3210. Как фильтровать только конкретную ячеку?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.03.2019, 14:11
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2018 
					
					
					
						Сообщений: 278
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Вот так если до этого столбика достучатся: 
var test = $(this).find('td')[1].innerHTML
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.03.2019, 14:14
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2018 
					
					
					
						Сообщений: 278
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Все, разобрался =) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |