Задать вопрос
1Sergey1
@1Sergey1

Как правильно группировать массив из csv?

Добрый вечер, подскажите пожалуйста как грамотно формировать массивы и сортировать их по разным параметрам.
Есть отзывы которые я должен сортировать по:
1) номеру телефона (Повторяется, т.к. много людей может оставить отзывы о владельце этого номера)
2) виду транспорта
3) кол-ву звёзд (рейтинга) 
4) общему кол-ву отзывов для этого номера телефона

https://jsfiddle.net/51tL8wbu/
в csvесть параметры не учавствующие в сортировке (их не указывал)
"+7 (000) 000-00-00"; // номер телефона
Водовоз; //вид транспорта
5; // кол-во звезд рейтинга

В JS получаю массив массивов (строк из csv)
Пример одной строки
0: "\"+7 (000) 000-00-00\";Водовоз;5;"

P.S. сейчас я только смог вывести всё что есть в файле на страницу, не понимаю как сортировать и можно ли как-то выводить не все отзывы сразу, а опред. кол-во. И важный косяк у меня, если телефон повторяется я его вывожу на страницу, а нужно что-бы каждый номер выводился только 1 раз, а общее кол-во отзывов для него указывалось при вовде на стр (пример в jsfiddle)
  • Вопрос задан
  • 55 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@furashcka
создаем объект, например $reviewsGroupedNumbers и прогоняем масcив из .csv используя в качестве ключа для объекта номер, пример:
[+7 (111) 111-11-11, +7 (111) 111-11-11, +7 (111) 111-11-11].forEach(function( item ) {
    if( !$reviewsGroupedNumbers[ item ] ) {
        $reviewsGroupedNumbers[ item ] = [];
    }

    $reviewsGroupedNumbers[ item ].push({
        countNumber: '...',
        technicType: '...',
        rating: '...'
    });
});


потом чтобы получить количество отзывов по номеру, достаточно вызвать так:
$reviewsGroupedNumbers[ '+7 (111) 111-11-11' ].length;


а для фильтрация стандартные функции es2015 или библиотеку lodash или underscore
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы