简体   繁体   中英

Sort Array javascript according to sizes

I have an array which i am trying to sort according to real world sizes

["s", "m", "l", "xl", "xxl", "xs"].sort(function(a,b){ 
    if(a === "xs") 
});

I am getting this array as response and I have to modify it in front end I have tried to sort it out but i cant find suitable condition to do What should I do such that array is sorted in this order

["xs","s", "m", "l", "xl", "xxl"]

Even If any size is missing it should be in correct order for instance If medium size is not available it should be in correct order

["xs","s", "l", "xl", "xxl"]

Use the index position of an ordered array:

 const order = ["xs", "s", "m", "l", "xl", "xxl"]; const orderedArray = ["s", "m", "l", "xl", "xxl", "xs"].sort((a, b) => { return order.indexOf(a) - order.indexOf(b) }) console.log(orderedArray) // ["xs", "s", "m", "l", "xl", "xxl"]

Start by creating an array of objects, with the corresponding sizes:

var sizes = [
  { size: 'xs', value: 0},
  { size: 's', value: 1},
  { size: 'm', value: 2},
  { size: 'l', value: 3},
  { size: 'xl', value: 4},
  { size: 'xxl', value: 5}
];

Then sort based on the values:

// sort by value
sizes.sort(function (a, b) {
  return a.value - b.value;
});

You can use Map here as a dictionary

 const sizes = { xs: 100, s: 200, m: 300, l: 400, xl: 500, xxl: 600, }; const dict = new Map(Object.entries(sizes)); const arr = ["s", "m", "l", "xl", "xxl", "xs"]; const result = arr.sort((a, b) => dict.get(a) - dict.get(b)); console.log(result);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM