| 
	| 
	
	| 
		
	| 
			
			 
			
				07.12.2018, 10:10
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 01.03.2018 
						Сообщений: 37
					 
		
 |  |  
	| 
				Помогите с поиском по csv, пожалуйста
			 Доброго всем времени суток.Помогите с поиском по csv, пожалуйста.
 Есть csv файл со след.данными:
 
 1,Прудников Сергей Анатольевич,672400114230,2308,97,Асс  оциация МСРО "Содействие" - Ассоциация "Межрегиональная саморегулируемая организация арбитражных управляющих "Содействие"
 2,Овчинников Андрей Валентинович,312000213769,1651,41,Со  юз "СРО АУ СЗ" - Союз "Саморегулируемая организация арбитражных управляющих Северо-Запада"
 3,Самсонов Вячеслав Алексеевич,521000170811,1629,36,САУ "СРО "ДЕЛО" - Союз арбитражных управляющих "Саморегулируемая организация "ДЕЛО"
 4,Овчинников Игорь Евгеньевич,575300927883,1562,82,СРО "ААУ "Паритет" - Саморегулируемая организация "Ассоциация арбитражных управляющих "Паритет"
 
 парсю файл -
 $.ajax({
 url: 'au.csv',
 dataType: 'text',
 }).done(successFunction);
 
 function successFunction(data) {
 var allRows = data.split(/\r?\n|\r/);
 var index={
 fio:{},
 inn:{},
 score:{},
 sro:{}
 };
 for (var singleRow = 0; singleRow < allRows.length; singleRow++) {
 var rowCells = allRows[singleRow].split(',');
 rowCells=allRows[rowCells[0]]={
 index : rowCells[0],
 fio : (rowCells[1] || '').trim(),
 inn :  (rowCells[2] || '').trim(),
 score : (rowCells[3] || '').trim()+','+(rowCells[4] || '').trim(),
 sro : (rowCells[5] || '').trim()
 };
 //console.log(rowCells);
 }
 }
 
 как теперь сделать поиск по фамилии на стороне клиента? чтобы только по фамилии пользователь мог получать все данные об искомом челе из csv файла.
 а если есть однофамильцы, чтобы выводились и совпадения по фамилии тоже.
 
 Плюс в карму гарантирован. Заранее спасибо знатокам.
 			 Последний раз редактировалось Vlad777, 07.12.2018 в 11:26.
 |  |  
	| 
		
	| 
			
			 
			
				07.12.2018, 10:26
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 12.08.2016 
						Сообщений: 299
					 
		
 |  |  
	| Поиск на сервере в файле или фильтрация полученного результата на клиенте????? |  |  
	| 
		
	| 
			
			 
			
				07.12.2018, 10:29
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 01.03.2018 
						Сообщений: 37
					 
		
 |  |  
	| Мне нужно чтобы пользователь забил фамилию в поиск и получил все что есть на этого чела из csv файла |  |  
	| 
		
	| 
			
			 
			
				07.12.2018, 10:54
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 12.08.2016 
						Сообщений: 299
					 
		
 |  |  
	| считываешь файл, через fs, потом собираешь массив - 1 строка файла - одна ячейка. получаешь вид массива такой:  
let arr = [
['name' : 'Прудников Сергей Анатольевич', 'hz': '672400114230,2308,97', 'company': 'Асс оциация МСРО "Содействие" - Ассоциация "Межрегиональная саморегулируемая организация арбитражных управляющих "Содействие"'];
...
]
 
И через цикл ищешь совпадения. Все. Работает. |  |  
	| 
		
	| 
			
			 
			
				07.12.2018, 10:56
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 12.08.2016 
						Сообщений: 299
					 
		
 |  |  
	| Это если на сервере обработку делать, ну а если на клиенте, то просто собираешь данные в массив и потом ищешь совпадения. Все. Работает.
 Я же спросил, где нужен поиск на сервере или на клиенте.
 |  |  
	| 
		
	| 
			
			 
			
				07.12.2018, 11:01
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 01.03.2018 
						Сообщений: 37
					 
		
 |  |  
	| считываешь файл, через fs.... сорри. что такое fs?
 Как закинуть результат парсинга в массив, если я с объектом работаю?
 Пользователь ищет искомого только по фамилии, а у меня по вашему получается в массиве сделать полный обход по индексу name, затем регуляркой или как? вытащить совпавшую фамилию....
 а если есть однофамильцы? вообще повесится?
 |  |  
	| 
		
	| 
			
			 
			
				07.12.2018, 11:01
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 01.03.2018 
						Сообщений: 37
					 
		
 |  |  
	| поиск на клиенте.
 p.s. поправка - не как а зачем закидывать результат парсинга в массив? чем работа с объектом плоха?
 			 Последний раз редактировалось Vlad777, 07.12.2018 в 11:07.
 |  |  
	| 
		
	| 
			
			 
			
				07.12.2018, 11:29
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 12.08.2016 
						Сообщений: 299
					 
		
 |  |  
	| потому что вы работаете с массивом данных. результат вашего парсинга это массив объектов. В прошлом коменте я не правильно написал, надо так: 
let arr = [
{'name' : 'Прудников Сергей Анатольевич', 'hz': '672400114230,2308,97', 'company': 'Асс оциация МСРО "Содействие" - Ассоциация "Межрегиональная саморегулируемая организация арбитражных управляющих "Содействие"'};
...
]
Из этого массива необходимо собрать таблицу наверное или список какой-то, а потом ты подгони код ниже под свой и будет работать.
 
Теперь код, писал правда давно, но я думаю что у вас все получится, смысл такой, что у тебя есть какая-то таблица с данными, типа тех, из файла, ты считываешь событие input на input'е и сравниваешь с тем что у тебя есть.
 
let inputFilterValue = input.value.toLowerCase(); // это то что вводишь в инпут
				var count = []; // счетчик
				for (var i = 0;i < data.length;i++) { // data.length - это длинна массивы с данными
					var cell = deta[i].cells; // что такое cells посмотри сам
					for (var f = 0; f < cell.length;f++) {
						if (inputFilterValue.length >= 3) { // поиск только после 3 символов, так лучше
							if (cell[f].innerHTML.toLowerCase().indexOf(inputFilterValue) > -1) count.push(cell[f]); // сравнение
                                                        for (var s = 0; s < count.length;s++) { // тут мы оставляем на экране только совпадения
								count[s].classList.add('find');
								count[s].parentNode.setAttribute('data-view', 'true');
							}
							_ELEMENTS.filter.info.innerHTML = (count.length > 0) ? 'Рузультат поиска: ' + count.length : 'Ничего не найдено'; // это если нет результатов поиска , то выводим сообщение, а если нет  сам смотри
						} else {
							cell[f].parentNode.setAttribute('data-view', 'default');
							cell[f].classList.remove('find');
							_ELEMENTS.filter.info.innerHTML = '';
							count.splice(0, count.length);
						}
					}
				}
Я думаю разберешься. Код рабочий, у меня работает
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				07.12.2018, 11:45
			
			
			
		 |  
	| 
		
			
			| Аспирант       |  | 
					Регистрация: 01.03.2018 
						Сообщений: 37
					 
		
 |  |  
	| Простите пожалуйста, но иногда лучше вообще не отвечать, чем так как вы.
 Я же черным по белому написал - есть веб страничка на ней инпут со словами - введите фамилию чтобы получить всю инфу о челе.
 Пользователь вводит фамилию->запрос на сервер->парсим csv->если есть така фамилия - выводим всю инфу об этом челе или людях, если есть совпадения.
 Пример csv дал, как парсю написал.
 Попросил - помогите написать скрипт поиска.
 
 Что не так???
 
 Зачем кидать общие фразы и код который у вас работает.
 Мне нужен код который конкретно работает с моими данными а не с вашей табличкой
 |  |  
	| 
		
	| 
			
			 
			
				07.12.2018, 11:54
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Vlad777, если запрашивать сервер (поиск), то тут два варианта:
 1) сервер вывалил все данные клиенту, в котором производится поиск - либо нашел, либо нет, более запросы на сервер не будут, все ищется уже в загруженном.
 
 2) вариант - сервер разбил на строки CSV файл (массив), в котором ищет запрошенное - есть ли совпадение подстроки которую ищут в массиве, если да извлекает эти строки возвращая массив (на клиенте это будет массив объектов)
 
 Выберите из двух что для вас предпочтительнее.
 |  |  |  |