有时,我们希望显示数组经过过滤或排序后的内容,而不实际变更或重置原始数据。在这种情况下,你可以创建返回已过滤或已排序数组的计算属性。
举例来说:
js
- const numbers = ref([1, 2, 3, 4, 5])
-
- const evenNumbers = computed(() => {
- return numbers.value.filter((n) => n % 2 === 0)
- })
template
<li v-for="n in evenNumbers">{{ n }}</li>
在计算属性不可行的情况下 (例如在多层嵌套的 v-for
循环中),你可以使用以下方法:
js
- const sets = ref([
- [1, 2, 3, 4, 5],
- [6, 7, 8, 9, 10]
- ])
-
- function even(numbers) {
- return numbers.filter((number) => number % 2 === 0)
- }
template
- <ul v-for="numbers in sets">
- <li v-for="n in even(numbers)">{{ n }}</li>
- </ul>
详细可阅读vue文档:列表渲染 | Vue.js (vuejs.org)