sortCustom

 avatar
user_8454105
plain_text
2 months ago
1.1 kB
2
Indexable
Never
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);
        }
      });
    }
  }
}
Leave a Comment