Nolis
@Nolis
it-гопник

Как равномерно разбить данные по колонкам?

Есть условно говоря 3 списка.
Имеется массив с городами (случайное кол-во).
Нужно как-то равномерно разбросать все города по этим трем спискам.
Что-то вроде того:
5ee6a30a1cff7288769080.png
Есть блок, который связывает все 3 списка (wrapper).
Списки разбиты отдельно 'city-column' > 'city-column__item'.
Интересует именно вариант на JS, понимаю что можно переверстать и впаять флексы.
  • Вопрос задан
  • 179 просмотров
Решения вопроса 2
origami1024
@origami1024
went out for a night walk
А один список без флексов и без js со свойствами column-fill: balance-all; и column-count: 3; не пойдет?
Ответ написан
0xD34F
@0xD34F Куратор тега Vue.js
Вычисляемое свойство:

data: () => ({
  items: [ ... ], // массив данных
  columns: 666, // количество колонок, на которые надо разбить items
}),
computed: {
  columnItems() {
    const { items, columns } = this;
    const colSize = Math.ceil(items.length / columns);
    return Array.from(
      { length: columns },
      (n, i) => items.slice(i * colSize, (i + 1) * colSize)
    );
  },
},

<ul v-for="col in columnItems">
  <li v-for="n in col">{{ n }}</li>
</ul>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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