Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run ยป
HTML / CSS / JS
<script setup> import { ref, computed } from 'vue'; const orders = ref([ { id: 1, product: 'Widget', qty: 3, price: 9.99, status: 'shipped' }, { id: 2, product: 'Gadget', qty: 1, price: 49.99, status: 'pending' }, { id: 3, product: 'Widget', qty: 2, price: 9.99, status: 'shipped' }, { id: 4, product: 'Doohic', qty: 5, price: 4.99, status: 'cancelled'}, ]); const filterStatus = ref('shipped'); const sortKey = ref('product'); // Chained computed chain const filtered = computed(() => orders.value.filter(o => o.status === filterStatus.value) ); const sorted = computed(() => [...filtered.value].sort((a, b) => String(a[sortKey.value]).localeCompare(String(b[sortKey.value])) ) ); const revenue = computed(() => filtered.value.reduce((sum, o) => sum + o.qty * o.price, 0) ); const groupedByProduct = computed(() => filtered.value.reduce((acc, o) => { acc[o.product] = (acc[o.product] ?? 0) + o.qty; return acc; }, {}) ); </script> <template> <p>Revenue: ${{ revenue.toFixed(2) }}</p> <li v-for="o in sorted" :key="o.id">{{ o.product }}</li> </template>
Result
Open