Array.sort() in JavaScript – I was asked about this in an interview

I was in an interview and I was given an array of strings.

const arr = [
“karachi”,
“lahore”,
“kolachi”,
“islamabad”
]

He asked me to sort it in alphabatical order.

I tried:

arr.sort((a, b) => {
return a < b;
});

He s…


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Mubashir Hassan

I was in an interview and I was given an array of strings.

const arr = [
  "karachi",
  "lahore",
  "kolachi",
  "islamabad"
]

He asked me to sort it in alphabatical order.

I tried:

arr.sort((a, b) => {
  return a < b;
});

He said it will work for numbers (actually it won't) but does not work for strings.

Then I tried

arr.sort((a, b) => {
  return a.charAt(0) < b.charAt(0);
});

He said it will work for just the first characters (actually it won't), then how karachi and kolachi starting with k will be sorted?

I was blank.

He said what are a and b?

I said a is the current element (the element at the index of current iteration) and b is the next element (the element at the current iteration + 1 index).

👉 But actually, it is the opposite. a is the next element and b is the current element.

Then he asked, does the sort modify the original array or returns a new array.

Honestly, most of the time I am working with .map(), .filter(), .some(), and .every(). So I knew the behaviour of these methods but I don't remember when was the last time I used .sort().

I said, it does not modify the original array, rather returns a new array like .map().

👉 But it is the opposite. .sort() modifies the original array and returns the reference to the original array, which is now sorted.

How does actually .sort() work?

Array.sort() accepts a an optional compare function as an argument.

If we do not provide any compare function, the sort method converts all the non-undefined elements to string, and then compare their sequences of UTF-16 code units values.

What does "compare their sequences of UTF-16 code units values" means?
To put it simple, let's say we write character a which is encoded as UTF-16 in JavaScript. In decimal it's value will be 97. For b it will be 98. i.e.
A = 65
B = 66
C = 67
and so on.
I expect you know the ACII table.

So basically the array of strings will automatically be sorted by .sort() method correctly without passing any compare function.

👉 In case of numbers, the behaviour is same;

const arr = [1, 30, 4, 21, 100000];
arr.sort();
console.log(arr);
// expected output: [1, 100000, 21, 30, 4]

Because each number is first converted into string, and then compared with respect to their UTF-16 code units values.

But If we provide a compare function to sort based on numbers:

const arr = [1, 5, 3, 10, 7]
arr.sort((nextValue, prevValue) => {
  // if returnValue > 0, move nextValue after the prevValue
  // if returnValue < 0, move the nextValue before the prevValue
  // if returnValue === 0, keep the original order, do not move any value
  return nextValue - prevValue;
});

So, the sort method can be thought of like this:

function compareFunction(a, b) {
  if (a is less than b by some ordering criterion) {
    return -1;
  }
  if (a is greater than b by the ordering criterion) {
    return 1;
  }
  a must be equal to b
  return 0;
}

I hope this will make the things a bit clear about Array.sort()

That's it for this post. Write your thoughts in the comments below!


This content originally appeared on DEV Community 👩‍💻👨‍💻 and was authored by Mubashir Hassan


Print Share Comment Cite Upload Translate Updates
APA

Mubashir Hassan | Sciencx (2022-12-13T21:55:50+00:00) Array.sort() in JavaScript – I was asked about this in an interview. Retrieved from https://www.scien.cx/2022/12/13/array-sort-in-javascript-i-was-asked-about-this-in-an-interview/

MLA
" » Array.sort() in JavaScript – I was asked about this in an interview." Mubashir Hassan | Sciencx - Tuesday December 13, 2022, https://www.scien.cx/2022/12/13/array-sort-in-javascript-i-was-asked-about-this-in-an-interview/
HARVARD
Mubashir Hassan | Sciencx Tuesday December 13, 2022 » Array.sort() in JavaScript – I was asked about this in an interview., viewed ,<https://www.scien.cx/2022/12/13/array-sort-in-javascript-i-was-asked-about-this-in-an-interview/>
VANCOUVER
Mubashir Hassan | Sciencx - » Array.sort() in JavaScript – I was asked about this in an interview. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/12/13/array-sort-in-javascript-i-was-asked-about-this-in-an-interview/
CHICAGO
" » Array.sort() in JavaScript – I was asked about this in an interview." Mubashir Hassan | Sciencx - Accessed . https://www.scien.cx/2022/12/13/array-sort-in-javascript-i-was-asked-about-this-in-an-interview/
IEEE
" » Array.sort() in JavaScript – I was asked about this in an interview." Mubashir Hassan | Sciencx [Online]. Available: https://www.scien.cx/2022/12/13/array-sort-in-javascript-i-was-asked-about-this-in-an-interview/. [Accessed: ]
rf:citation
» Array.sort() in JavaScript – I was asked about this in an interview | Mubashir Hassan | Sciencx | https://www.scien.cx/2022/12/13/array-sort-in-javascript-i-was-asked-about-this-in-an-interview/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.