Madeas
@Madeas
UI / UX Designer, Frontend Developer

Разбить массив на массивы vuejs?

Привет всем!
Подскажите, как во vue разбить один массив на разные массивы, при условии:

1. массив может состоять из n-количества обьектов;
2. обьекты в массиве не имеют цикличности;
3. в каждом обьекте имеется куча данных и type_id, который может быть или 0 или 1; Исходя из этого условия, массивов должно получиться два.

list: [{..., ..., type_id: 0, ..., ..., }, {..., ..., type_id: 0, ..., ..., }, {..., ..., type_id: 0, ..., ..., }, {..., ..., type_id: 1,..., ..., }, ..., ..., ]


Можно как-то через Lodash > Filter, но я им не пользовался. Пробую нативно через computed.
Каждый массив нужно будет выводить в разные места на странице, желательно одним компонентом, например, <my-component тут условия, если тип_ид === 0 />. Не знаю как лучше сделать. Подскажите, как решить проблему?
  • Вопрос задан
  • 411 просмотров
Решения вопроса 2
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Если предполагается, что два новых массива будут использоваться независимо, тогда нужно создать два вычисляемых свойства. А дальше простым фильтром перебрать все элементы:
{
  computed: {
    id1() {
      return this.list.filter(i => i.type_id === 1)
    },

    id0() {
      return this.list.filter(i => i.type_id === 0)
    }
  }
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега Vue.js
computed: {
  listGroupedByTypeId() {
    return this.list.reduce((acc, n) => {
      (acc[n.type_id] = acc[n.type_id] || []).push(n);
      return acc;
    }, {});
  },
},
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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