Вы можете сделать что-то вроде этого, вам, возможно, придется настроить его под свой проект в соответствии с вашими потребностями.
Я вообще не использую VueJS, так что, возможно, для вашей проблемы найдутся лучшие решения, так как я не знаю всех возможностей, которые дает эта платформа.
new Vue({
el: "#app",
data: {
agendas: [
[{
tag: 'p',
class: 'm-agenda__date',
value: 'Tue, 12 Oct'
},
{
tag: 'p',
class: 'm-agenda__time',
value: '8am - 12pm',
},
{
tag: 'h3',
class: 'm-agenda__subheading',
value: 'Subheading of the Sub-Section'
},
{
tag: 'p',
class: 'm-agenda__description',
value: 'Ipsum dolor sit amet, consectetur adi piscing elit duis volutpat, urna in. Lorem ipsum dolor sit amet.'
}
]
],
},
methods: {
slice(agenda) {
return agenda.slice(Math.max(agenda.length - 2, 1));
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<h2>Agendas</h2>
<table>
<tbody>
<tr v-for="(agenda, index) in agendas" :key="index" class="m-table__row">
<template v-for="(column, index) in agenda">
<td class="m-table__column" v-if="(index < agenda.length - 2) && column.tag" :key="index">
<tag :is="column.tag" :class="column.class">
{{ column.value }}
</tag>
</td>
</template>
<td class="m-table__column">
<tag v-for="(column, index) in slice(agenda)" v-if="column.tag" :key="index" :is="column.tag" :class="column.class">
{{ column.value }}
</tag>
</td>
</tr>
</tbody>
</table>
</div>