-2

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"]
1
  • I can't change backend its not allowed I have to do it on front end Commented Oct 25, 2021 at 8:13

3 Answers 3

2

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"]

Sign up to request clarification or add additional context in comments.

Comments

0

You can use an object here as a dictionary.

Fetching data from object is much better than array

const sizes = {
  xs: 100,
  s: 200,
  m: 300,
  l: 400,
  xl: 500,
  xxl: 600,
};

const arr = ["s", "m", "l", "xl", "xxl", "xs"];
const result = arr.sort((a, b) => sizes[a] - sizes[b]);
console.log(result);

3 Comments

what an overhead. you have already a data structure which has an access of O(n) and use another structure with the same.
Map looks cool but not needed. Just use sizes[a] instead of dict.get(a).
Yeah, there is no need of Map, Code edited, thanks for the feedback 🙂
0

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;
});

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.