Вы можете проверить, находится ли продукт в первых пяти продуктах рендеринга, передав его идентификатор функции и показывая продукт в соответствии с его возвращенным значением. Вот пример:
<template>
<div>
<div class="category" v-for="(category, categoryIndex) in categories" :key="categoryIndex">
<div class="product" v-for="(product, productIndex) in category.products" :key="productIndex">
<span v-if="incrementCount(product.id)">{{product.name}}</span>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
categories: [
{
products: [
{ id: 1, name: "1" },
{ id: 2, name: "2" },
{ id: 3, name: "3" },
]
},
{
products: [
{ id: 4, name: "4" },
{ id: 5, name: "5" },
{ id: 6, name: "6" },
]
}
]
};
},
methods: {
incrementCount: function(id) {
let count = 0;
for(let i = 0; i < this.categories.length; i++)
for(let j = 0; j < this.categories[i].products.length; j++)
if(count++ < 5 && this.categories[i].products[j].id===id)
return true;
return false;
}
},
};
</script>
Соответственно, результат будет:
1
2
3
4
5