@jeruthadam
Я крут

Как эффективно отобразить элементы вложенных массивов с определёнными индексами?

Есть массив:

[
  ['name', 'surname', 'age', 'job'],
  ['Vasya', 'Pupkin', '22', 'banker'],
  ['Petya', 'Seledkin', '23', 'developer'],
  ['Vova', 'Putin', '88', 'politician'],
  ...еще 10к таких же
]

Нужно вынести элементы вложенных массивов только с определёнными индексами, например, 0 и 3:

[
  ['name', 'job'],
  ['Vasya', 'banker'],
  ['Petya', 'developer'],
  ['Vova', 'politician'],
  ...еще 10к таких же
]

Сделать желательно наиболее быстрым способом, т.к. это происходит на клиенте.

Я попробовал отфильтровать это силами Vue, но он ругается:

<table>
      <tr v-for="(item, i) in parsedCSV" :key="i">
        <th v-if="i === 0 || i === 3"  v-for="(rowItem, index) in item" :key="index">
          {{ rowItem }}
        </th>
      </tr>
    </table>

Говорит, что нельзя v-if юзать на v-for. Как тогда лучше сделать?
  • Вопрос задан
  • 405 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Сделайте v-for по индексам нужных вам элементов:

<tr v-for="item in parsedCSV">
  <td v-for="i in [ 0, 3 ]">{{ item[i] }}</td>
</tr>

Или сделайте computed свойство, где всё лишнее будет убрано:

shortItems() {
  return this.parsedCSV.map(([ name,,,job ]) => [ name, job ]);
},

<tr v-for="item in shortItems">
  <td v-for="n in item">{{ n }}</td>
</tr>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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