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.