JavaScript tutorials > Objects and Arrays > Arrays > How do you sort an array in JavaScript?
How do you sort an Array in JavaScript?
Sorting arrays is a common task in JavaScript development. The sort()
method allows you to arrange array elements in ascending or descending order. By default, the sort()
method sorts elements lexicographically (as strings). This tutorial explores how to use the sort()
method with and without a comparison function, including numeric and custom sorting examples.
Basic Sorting with sort()
The sort()
method, when called without a comparison function, sorts the array elements alphabetically. It modifies the original array.
const fruits = ['Banana', 'Orange', 'Apple', 'Mango'];
fruits.sort();
console.log(fruits); // Output: ['Apple', 'Banana', 'Mango', 'Orange']
Sorting Numbers
To sort numbers correctly, you need to provide a comparison function. This function takes two arguments (a
and b
) and returns a value indicating their relative order. If a - b
is negative, a
comes before b
. If it's positive, b
comes before a
. If it's zero, their order remains unchanged.
const numbers = [40, 100, 1, 5, 25, 10];
numbers.sort(function(a, b){return a - b});
console.log(numbers); // Output: [1, 5, 10, 25, 40, 100]
Sorting Numbers (Descending Order)
To sort numbers in descending order, simply reverse the order of a
and b
in the comparison function (b - a
).
const numbers = [40, 100, 1, 5, 25, 10];
numbers.sort(function(a, b){return b - a});
console.log(numbers); // Output: [100, 40, 25, 10, 5, 1]
Sorting Objects by Property
You can sort an array of objects based on the value of a specific property. The comparison function compares the values of the property for each pair of objects. In this example, the objects are sorted alphabetically by their name
property.
const items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
];
items.sort(function (a, b) {
if (a.name > b.name) {
return 1;
}
if (a.name < b.name) {
return -1;
}
return 0;
});
console.log(items);
Concepts Behind the Snippet
The core concept is the comparison function. The Understanding how the comparison function returns values (negative, positive, or zero) is crucial for controlling the sorting behavior.sort()
method leverages this function to determine the order of elements. If no comparison function is provided, it defaults to lexicographical (string) comparison.
Real-Life Use Case
Imagine you're displaying a list of products on an e-commerce website. You might want to sort the products by price (low to high or high to low), popularity, or rating. Sorting arrays of user data by age, registration date, or name is another common scenario.
Best Practices
sort()
method modifies the original array. If you need to preserve the original array, create a copy before sorting using slice()
or the spread operator (...
).
Interview Tip
Be prepared to explain how the sort()
method works and how to write a comparison function for different data types and sorting orders. Demonstrate your understanding of immutability and its importance when working with arrays.
When to use them
Use the sort()
method when you need to arrange the elements of an array in a specific order, whether it's alphabetical, numerical, or based on a custom criteria. It's particularly useful when displaying data to users or performing operations that require sorted data.
Memory footprint
The sort()
method performs an in-place sort, meaning it modifies the original array. The memory footprint is relatively small, but creating a copy of the array before sorting (to preserve the original) will increase memory usage temporarily.
Alternatives
While sort()
is commonly used, libraries like Lodash offer alternative sorting functions with potentially better performance or additional features. For immutable sorting, libraries like Immer can be helpful.
Pros
sort()
method is a built-in JavaScript function, making it readily available.
Cons
sort()
method modifies the original array, which can lead to unexpected side effects if not handled carefully.
FAQ
-
What is the default sorting order of the
sort()
method?
The default sorting order is lexicographical (as strings). -
How do I sort numbers in ascending order?
Use the comparison functionfunction(a, b){return a - b}
. -
How do I sort an array without modifying the original array?
Create a copy of the array usingarray.slice()
or the spread operator[...array]
before sorting. -
Can I sort arrays of objects?
Yes, you can sort arrays of objects by providing a comparison function that compares the desired properties of the objects.