Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.12.2018, 10:10
Аспирант
Отправить личное сообщение для Vlad777 Посмотреть профиль Найти все сообщения от Vlad777
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2018, 10:26
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

Поиск на сервере в файле или фильтрация полученного результата на клиенте?????
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2018, 10:29
Аспирант
Отправить личное сообщение для Vlad777 Посмотреть профиль Найти все сообщения от Vlad777
 
Регистрация: 01.03.2018
Сообщений: 37

Мне нужно чтобы пользователь забил фамилию в поиск и получил все что есть на этого чела из csv файла
Ответить с цитированием
  #4 (permalink)  
Старый 07.12.2018, 10:54
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

считываешь файл, через fs, потом собираешь массив - 1 строка файла - одна ячейка. получаешь вид массива такой:

let arr = [
['name' : 'Прудников Сергей Анатольевич', 'hz': '672400114230,2308,97', 'company': 'Асс оциация МСРО "Содействие" - Ассоциация "Межрегиональная саморегулируемая организация арбитражных управляющих "Содействие"'];
...
]


И через цикл ищешь совпадения. Все. Работает.
Ответить с цитированием
  #5 (permalink)  
Старый 07.12.2018, 10:56
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

Это если на сервере обработку делать, ну а если на клиенте, то просто собираешь данные в массив и потом ищешь совпадения. Все. Работает.

Я же спросил, где нужен поиск на сервере или на клиенте.
Ответить с цитированием
  #6 (permalink)  
Старый 07.12.2018, 11:01
Аспирант
Отправить личное сообщение для Vlad777 Посмотреть профиль Найти все сообщения от Vlad777
 
Регистрация: 01.03.2018
Сообщений: 37

считываешь файл, через fs.... сорри. что такое fs?

Как закинуть результат парсинга в массив, если я с объектом работаю?
Пользователь ищет искомого только по фамилии, а у меня по вашему получается в массиве сделать полный обход по индексу name, затем регуляркой или как? вытащить совпавшую фамилию....
а если есть однофамильцы? вообще повесится?
Ответить с цитированием
  #7 (permalink)  
Старый 07.12.2018, 11:01
Аспирант
Отправить личное сообщение для Vlad777 Посмотреть профиль Найти все сообщения от Vlad777
 
Регистрация: 01.03.2018
Сообщений: 37

поиск на клиенте.

p.s. поправка - не как а зачем закидывать результат парсинга в массив? чем работа с объектом плоха?

Последний раз редактировалось Vlad777, 07.12.2018 в 11:07.
Ответить с цитированием
  #8 (permalink)  
Старый 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);
						}

					}

				}


Я думаю разберешься. Код рабочий, у меня работает
Ответить с цитированием
  #9 (permalink)  
Старый 07.12.2018, 11:45
Аспирант
Отправить личное сообщение для Vlad777 Посмотреть профиль Найти все сообщения от Vlad777
 
Регистрация: 01.03.2018
Сообщений: 37

Простите пожалуйста, но иногда лучше вообще не отвечать, чем так как вы.

Я же черным по белому написал - есть веб страничка на ней инпут со словами - введите фамилию чтобы получить всю инфу о челе.
Пользователь вводит фамилию->запрос на сервер->парсим csv->если есть така фамилия - выводим всю инфу об этом челе или людях, если есть совпадения.
Пример csv дал, как парсю написал.
Попросил - помогите написать скрипт поиска.

Что не так???

Зачем кидать общие фразы и код который у вас работает.
Мне нужен код который конкретно работает с моими данными а не с вашей табличкой
Ответить с цитированием
  #10 (permalink)  
Старый 07.12.2018, 11:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Vlad777, если запрашивать сервер (поиск), то тут два варианта:

1) сервер вывалил все данные клиенту, в котором производится поиск - либо нашел, либо нет, более запросы на сервер не будут, все ищется уже в загруженном.

2) вариант - сервер разбил на строки CSV файл (массив), в котором ищет запрошенное - есть ли совпадение подстроки которую ищут в массиве, если да извлекает эти строки возвращая массив (на клиенте это будет массив объектов)

Выберите из двух что для вас предпочтительнее.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста!!! igrovik Общие вопросы Javascript 40 10.04.2018 13:53
Помогите пожалуйста с тестом alex-chrono Общие вопросы Javascript 0 14.11.2012 19:23
Помогите пожалуйста правильно написать скрипт raffx Events/DOM/Window 17 16.10.2012 20:31
Помогите пожалуйста я новичок! NemzevDanil Общие вопросы Javascript 3 02.02.2011 19:23
Помогите пожалуйста я новичок! NemzevDanil Элементы интерфейса 0 02.02.2011 00:00