Home > OS >  Unable to sort array of objects by version number in JavaScript
Unable to sort array of objects by version number in JavaScript

Time:06-14

I have an array of objects in that I want to sort the array based on the xxx version number string. But it seems there is an issue in sorting the order as per my desire.

I have seen the existing solutions for example, the enter image description here

CodePudding user response:

How can I treat the 9.10 is greater than 9.2?

Here you are not considering them as regular floating values. So if you ignore the ., you can easily compare them.

Try this one

my_list.sort((a, b) => {
       const _a = a['xxx'].split('.')
       const _b = b['xxx'].split('.')
       if (Number(_a[0]) < Number(_b[0])) {
         return -1;
       }
       if (Number(_a[0]) > Number(_b[0])) {
         return 1;
       }
       if (Number(_a[1]) < Number(_b[1])) {
          return -1;
       }
       if (Number(_a[1]) > Number(_b[1])) {
          return 1;
       }
       return 0;
     });

CodePudding user response:

Here is a generic solution

let my_list = [
  {"xxx": "9.6", "no_of_occurrence": 1 },
  {"xxx": "9.2", "no_of_occurrence": 1},
  {"xxx": "9.11.3", "no_of_occurrence": 1},
  {"xxx": "9.11.1", "no_of_occurrence": 1},
  {"xxx": "9.10", "no_of_occurrence": 1}
];

my_list.sort((a, b) => {
    let va = a.xxx.split("."), vb = b.xxx.split("."), i = 0
    while(i < va.length && i < vb.length && ( va[i]) == ( vb[i]))
        i  ;
    return ( va[i]) - ( vb[i]);
})

console.log(my_list)

  • Related