Сортировка массива из csv

201
18 октября 2018, 12:10

Подскажите пожалуйста как грамотно формировать массивы и сортировать их по разным параметрам. Есть отзывы которые я должен сортировать по:

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

в csv есть параметры не учавствующие в сортировке (их не указывал)

"+7 (000) 000-00-00"; // номер телефона
Водовоз; //вид транспорта
5; // кол-во звезд рейтинга

В JS получаю массив массивов (строк из csv) Пример одной строки

0: "\"+7 (000) 000-00-00\";Водовоз;5;"

P.S. сейчас я только смог вывести всё что есть в файле на страницу, не понимаю как сортировать и можно ли как-то выводить не все отзывы сразу, а опред. кол-во. И важный косяк у меня, если телефон повторяется я его вывожу на страницу, а нужно что-бы каждый номер выводился только 1 раз, а общее кол-во отзывов для него указывалось при вовде на стр

// шаблон строки отзыва 
let tableLine = `<div class="line"> 
					<div class="td">{{ countNumber }}</div> 
					<div class="td">{{ phoneNumber }}</div> 
					<div class="td">{{ technicType }}</div> 
					<div class="td"> 
						{{ rating }} 
					</div> 
					<div class="td">{{ reviewsCount }} <span class="tahoma">прочитать</span></div> 
				</div>`; 
 
const reviews = [ 
  [ 
    "\"+7 (000) 000-00-00\";Водовоз;5;Снежанна Ноготок;rev1.jpg;ВКОНТАКТЕ;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;" 
  ], 
  [ 
    "\"+7 (111) 111-11-11\";Самосвал;4;Снежанна Ноготок 1;rev1.jpg;FACEBOOK;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;A2" 
  ], 
  [ 
    "\"+7 (222) 222-22-22\";Самосвал;4.5;Снежанна Ноготок 2;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;A2" 
  ], 
  [ 
    "\"+7 (333) 333-33-33\";Самосвал;5;Снежанна Ноготок 3;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;A2" 
  ], 
  [ 
    "\"+7 (444) 444-44-44\";Самосвал;5;Снежанна Ноготок 4;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;A2" 
  ], 
  [ 
    "\"+7 (555) 555-55-55\";Самосвал;5;Снежанна Ноготок 5;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;A2" 
  ], 
  [ 
    "\"+7 (666) 666-66-66\";Самосвал;5;Снежанна Ноготок;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;" 
  ], 
  [ 
    "\"+7 (777) 777-77-77\";Самосвал;5;Снежанна Ноготок;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;" 
  ], 
  [ 
    "\"+7 (222) 222-22-22\";Самосвал;5;Снежанна Ноготок 11;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;A2" 
  ], 
  [ 
    "\"+7 (444) 444-44-44\";Самосвал;5;Снежанна Ноготок 45;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;A2" 
  ], 
  [ 
    "\"+7 (777) 777-77-77\";Самосвал;5;Снежанна Ноготок 77;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;A2" 
  ], 
  [ 
    "\"+7 (000) 000-00-00\";Самосвал;5;Снежанна Ноготок;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;" 
  ], 
  [ 
    "\"+7 (000) 000-00-00\";Самосвал;5;Снежанна Ноготок;rev1.jpg;INSTAGRAM;https://instagram.com/;Спасибо вам за работу;Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget;" 
  ] 
] 
 
 
// Первый вывод отзывов 
/*  
[0] - Номер телефона 
[1] - Техника 
[2] - Оценка 
[3] - Имя оставившего отзыв 
[4] - Ссылка на аватар 
[5] - Соц сеть 
[6] - Ссылка на профиль 
[7] - Заголовок отзыва 
[8] - Текст отзыва 
 
*/ 
// Рендер таблицы рейтинга 
function renderTable() { 
  let line = ''; 
  let tableOutput = $('#table_content'); 
  let counter = 0; // счётчик общего кол-ва отзывов 
 
  for (let key in reviews) { 
 
    let item = reviews[key][0].split(';'); // разбиваем строку на массив по разделителю 
    let phone = item[0].replace(/"/g, ''); // убираем кавычки из номера телефона 
    let rating = item[2]; 
 
    ++counter; 
 
    line += tableLine 
      .replace("{{ countNumber }}", counter) 
      .replace("{{ phoneNumber }}", phone) 
      .replace("{{ technicType }}", item[1]) 
      .replace("{{ rating }}", item[2]) 
      .replace("{{ reviewsCount }}", '{тут нужно кол-во отзывов для этого номера}'); 
 
    // Сбор блоков перед выводом 
    $('.hid_table').html(line); 
  } 
  // Вывод блоков 
  $('.output').html($('.hid_table').html()); 
  $('.hid_table').html(''); 
} 
renderTable()
.line { 
  display: flex; 
} 
 
.td { 
  padding: 10px; 
} 
 
.line:nth-child(even) { 
  background: #ddd; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="hid_table" style="display: none;"></div> 
 
<div class="output"></div>

READ ALSO
Scale анимация для WPF окна

Scale анимация для WPF окна

Попробовал этот код:

230
Не могу авторизоваться через VkNet

Не могу авторизоваться через VkNet

Пытаюсь авторизоваться в VK через VkNetМой код:

190
Не может прочитать из GzipStream

Не может прочитать из GzipStream

Не декомпресит данныеПри чтении из GzipStream количество считанных байтов = 0

150
Отсекание части текста. С#

Отсекание части текста. С#

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

183