Задать вопрос
@tajfun_rt

Как перебрать на совпадение все свойства объекта из LocalStorage и вывести в массив по три элемента?

В LocalStorage храниться например следующий объект:
key: citys  value: [{"city":"Город1", "name":"Имя1"},{"city":"Город2", "name":"Имя2"},{"city":"Город1", "name":"Имя3"},{"city":"Город1", "name":"Имя4"},{"city":"Город3", "name":"Имя5"},{"city":"Город1", "name":"Имя6"}]

Мне нужно через jsPDF вывести в таблицах пару city, name, но так чтобы в каждой таблице было по три пары (три элемента) в который совпадал city.

Я пробую выводить следующим образом, чтобы вообще что-то вывести)):
var pdf = new jsPDF ();
localStorageCitys.forEach((element,i) => {
        rows[i] = [element.city, element.name];
        pdf.autoTable(col, rows);
});

Получается в первой таблице 1 строка (Город1 - Имя1), во второй таблице две строки (Город1 - Имя1, Город2 - Имя2), в третьей таблице три строки ... ну и т.д.
Это понятно, по мере заполнения массива таблицы заполняются.
Так вот вопрос, как мне вывести таблицы по 3 элемента , чтобы в нем совпадали city.
т.е. массив должен получиться что то типа этого
[0] [0] ["Город1", "Имя1"],
     [1] ["Город1", "Имя3"],
     [2] ["Город1", "Имя4"],

[1][0] ["Город1", "Имя6"]

[2] [0] ["Город2", "Имя2"],

[3] [0] ["Город3", "Имя5"],

тогда можно было бы циклом вывести [0],[1],[2],[3] в которых нужное количество строк.

Надеюсь я доходчиво объяснил, что хочу сделать, знаний не хватает), я примерно понял мысль, что мне сделать надо , но реализовать пока не могу, может это как-то по другому делается.
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
  1. Сортируете свой массив по городу.
  2. Заводите новый массив, двумерный, в который будете складывать записи.
  3. Итерируете по своему отсортированному массиву и смотрите, не поменялся ли город и не стало ли записей три. Если нет, то добавляете запись в последний подмассив двумерного, если да, то добавляете в двумерный новый массив и кладёте запись в него.
  4. Выводите получившийся двумерный массив куда надо.

Для простоты на третьем шаге можно завести три переменных: предыдущий город, количество элементов в последнем массиве и индекс последнего массива в двумерном. Можно обойтись и без них, но лучше сначала сделать наглядно, раз у вас с алгоритмом пока проблема.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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