sortCustom
user_8454105
plain_text
2 years ago
1.1 kB
9
Indexable
import { computed } from 'vue';
export default {
// Assuming `data` is the function that returns your initial data
data() {
return {
items: [
// Your array of objects here
]
}
},
computed: {
sortedItems() {
// Assign each prefix a priority
const order = ['company', 'pet', 'plans', 'contact', 'summary', 'ny'];
return this.items.sort((a, b) => {
const keyA = Object.keys(a).find(key => order.some(prefix => key.startsWith(prefix)));
const keyB = Object.keys(b).find(key => order.some(prefix => key.startsWith(prefix)));
const priorityA = keyA ? order.findIndex(prefix => keyA.startsWith(prefix)) : order.length;
const priorityB = keyB ? order.findIndex(prefix => keyB.startsWith(prefix)) : order.length;
// Compare by priority, then by key alphabetically if the same priority
if (priorityA !== priorityB) {
return priorityA - priorityB;
} else {
return keyA.localeCompare(keyB);
}
});
}
}
}Editor is loading...
Leave a Comment