You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue中能否在v-for循环中提前获取并使用下一个值?

Vue v-for中对比当前值与下一个值的报错解决方法

问题出在遍历到最后一个元素时,index+1会超出数组的索引范围,此时items[index+1]是undefined,直接访问undefined.message就会触发报错。

解决方法

方法一:判断索引范围

在访问下一个元素的属性前,先检查当前索引是否不是最后一个,避免越界访问:

<script setup>
import { ref } from 'vue'

const parentMessage = ref('Parent')
const items = ref([{ message: 'Foo' }, { message: 'Bar' }])
</script>

<template>
    <li v-for="(item, index) in items">
        {{ index < items.length - 1 ? items[index+1].message : '无下一项' }}
        {{ parentMessage }} - {{ index }} - {{ item.message }}
    </li>
</template>

方法二:使用可选链操作符

利用ES6的可选链?.,当左侧值为undefined或null时,表达式会直接返回undefined,不会报错:

<script setup>
import { ref } from 'vue'

const parentMessage = ref('Parent')
const items = ref([{ message: 'Foo' }, { message: 'Bar' }])
</script>

<template>
    <li v-for="(item, index) in items">
        {{ items[index+1]?.message }}
        {{ parentMessage }} - {{ index }} - {{ item.message }}
    </li>
</template>

两种方法各有优势:方法一可以自定义无下一项时的显示文本,方法二更简洁,适合不需要额外提示的场景。

内容的提问来源于stack exchange,提问作者RaGyun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 12:48:29