Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с поиском по csv, пожалуйста (https://javascript.ru/forum/misc/76123-pomogite-s-poiskom-po-csv-pozhalujjsta.html)

Vlad777 07.12.2018 12:47

Файл лежит на сервере. Оригинал был Excel - сохранил в csv с помощью OpenOffice, в utf-8, т.к. сайт тоже в utf-8

Nexus 07.12.2018 12:50

Накидал на коленке, попробуйте.
Если работает, останется только обработчики повесить.
new Promise(function(resolve, reject) {
    $.ajax({
        url: 'au.csv',
        dataType: 'text',
        success: resolve,
        error: reject
    });
}).then(function(response) {
    const CELL_DELIMITER = ',';

    return response.split(/\r?\n|\r/).map(function(row) {
        const cells = row.split(CELL_DELIMITER).map(function(value) {
            return (value || '').trim();
        });

        return {
            index: cells[0],
            fio: cells[1],
            inn: cells[2],
            score: cells[3] + ',' + cells[4],
            sro: cells[5]
        };
    });
}).then(function(data) {
    const getFirstChar = function(string) {
        return (string||'').substr(0, 1).toLowerCase();
    };

    const indexOfNames = {};
    data.forEach(function(person, key) {
        const firstChar = getFirstChar(person.fio);
        if(!firstChar)
            return;

        (indexOfNames[firstChar] || (indexOfNames[firstChar] = [])).push({
            name: person.fio,
            key: key
        });
    });

    return function(name) {
        name = name.toLowerCase();
        const firstChar = getFirstChar(name);
        if (!indexOfNames[firstChar])
            return [];

        const response = [];
        indexOfNames[firstChar].forEach(function(item) {
            if (item.name.indexOf(name) < 0)
                return;

            response.push(data[item.key]);
        });


        return response;
    };
}).then(function(search) {
    console.log(search('Прудников'));
});

Vlad777 07.12.2018 12:57

Nexus,
во-первых, спасибо за ответ!

Вот что в консоли пишет - Uncaught (in promise)
Object {readyState: 4, responseText: "<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">…was not found on this server.</p></body></html>", status: 404, statusText: "Not Found"}

помогите плиз, если не сложно!
что конкретно запрос не нашел?

и 2 вопрос, а как быть с однофамильцами? можно их как-нибудь тоже обработать для выдачи?

laimas 07.12.2018 12:59

Nexus, что-то слишком много :)

laimas 07.12.2018 13:00

Цитата:

Сообщение от Vlad777
Оригинал был Excel - сохранил в csv

И что сохраненный выглядит так как показано?

Nexus 07.12.2018 13:01

Vlad777, написано же, что файл не найден.
Поправьте путь в строке 3.
Цитата:

Сообщение от laimas
Nexus, что-то слишком много

Чего много?

Цитата:

Сообщение от laimas
И что сохраненный выглядит так как показано?

Excel конвертирует в csv как попало.

Nexus 07.12.2018 13:03

Цитата:

Сообщение от Vlad777
и 2 вопрос, а как быть с однофамильцами? можно их как-нибудь тоже обработать для выдачи?

Вы путь правильный укажите сначала, потому увидите, что с однофамильцами.

Vlad777 07.12.2018 13:03

Nexus,
так частично сам виноват, сорри, по факту файл чуть по другому называется..... еще раз сорри!
Но теперь пишет - Uncaught (in promise) TypeError: Cannot read property 'substr' of undefined(…)getFirstChar

Vlad777 07.12.2018 13:04

laimas,
да сохраненный файл открыл в нотепад++ - затем копи и вставил сюда

laimas 07.12.2018 13:04

Цитата:

Сообщение от Nexus
Чего много?

Кода много :)

Цитата:

Сообщение от Nexus
Excel конвертирует в csv как попало.

Да с чего это вдруг? ;)


Часовой пояс GMT +3, время: 00:30.