BonBonSlick
@BonBonSlick
Vanilla Web Architect

Как пропустить или начать с другого индекса в v-for?

<tr v-for="(value, index) in this.pedometer.gps.points"
                        :key="index"
                    >
                        <td v-text="`${value.latitude} ${value.longitude}`" />
                        <td v-text="`${pedometer.gps.points[index + 1].latitude} ${pedometer.gps.points[index + 1].longitude}`" />
                        <td v-text="distanceBetweenCoords(
                            value.latitude,
                            value.longitude,
                        pedometer.gps.points[index + 1].latitude,
                        pedometer.gps.points[index + 1].longitude)"
                        />
                    </tr>

client.js?06a0:77 TypeError: Cannot read property 'latitude' of undefined
    at eval (index.vue?9726:269)


Естественно ведь индекса arr.length + 1 нет в массиве.
  • Вопрос задан
  • 65 просмотров
Решения вопроса 2
Nolis
@Nolis
it-гопник
v-if="(index === value)"
v-if="(index > value)"
v-if="(index < value)"
Ответ написан
0xD34F
@0xD34F Куратор тега Vue.js
Что значит "начать с другого индекса" - я без понятия.

"Пропустить" - очевидно, для этого не надо обрабатывать последний элемент. Вычисляемое свойство, где массиву будет сделан slice(0, -1).

Если последний элемент должен отображаться, проверяйте индекс перед его использованием:

v-text="index === arr.length - 1 ? какоеТоДефолтноеЗначение : используем arr[index + 1]"


Ещё, возможно (ну, вы же решили скрыть, что за задачу решаете, так что можно лишь предполагать), вы бы хотели обрабатывать последний элемент и первый вместе. Для этого добавьте к index + 1 взятие остатка от деления на длину массива.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы