sorting array of numbers into sets in JavaScript

In JavaScript, we often need to sort an array of numbers and convert it into a Set data structure. This process involves understanding how JavaScript's sort method works with numbers and how to properly convert arrays to Sets.

Understanding JavaScript Arrays

An array in JavaScript is a collection of elements stored under one roof. Unlike arrays in other languages, JavaScript arrays are objects with built-in properties and methods that make data manipulation easier.

const arrayExample = [100, 200, 500, 600];
console.log(arrayExample);
[100, 200, 500, 600]

The Problem with JavaScript's Sort Method

JavaScript's sort() method converts elements to strings before sorting, which can produce unexpected results with numbers. It uses UTF-16 character codes for comparison.

const arrOfNumbers = [10, 5, 1];
console.log("Default sort:", arrOfNumbers.sort());
// This gives unexpected result: [1, 10, 5]
Default sort: [1, 10, 5]

The sorting works correctly with strings:

const strArray = ['c', 'z', 'a'];
console.log("String sort:", strArray.sort());
String sort: ['a', 'c', 'z']

Sorting Numbers Correctly

To sort numbers properly, we need a compare function that returns negative, zero, or positive values based on numerical comparison:

const arrOfNumbers = [10, 5, 1];
console.log("Numeric sort:", arrOfNumbers.sort((x, y) => x - y));
Numeric sort: [1, 5, 10]

Understanding JavaScript Sets

A Set is a collection of unique elements introduced in ES6. Sets automatically remove duplicates and don't maintain insertion order through indices.

const setFromString = new Set("javascript");
console.log("Set from string:", setFromString);
Set from string: Set(10) {'j', 'a', 'v', 's', 'c', 'r', 'i', 'p', 't'}
const setFromArray = new Set([1, 2, 3, 2, 1]);
console.log("Set from array:", setFromArray);
Set from array: Set(3) {1, 2, 3}

Sorting Array of Numbers into a Set

Since Sets cannot be sorted directly, we must sort the array first, then convert it to a Set:

function sortArray(num1, num2) {
    return num1 - num2;
}

function sortedArrayIntoSet(arr) {
    const sortedArray = arr.sort(sortArray);
    const sortedSet = new Set(sortedArray);
    console.log("Sorted array:", sortedArray);
    console.log("As Set:", sortedSet);
    return sortedSet;
}

const arrOfNumbers = [20000, 12, -9, 23, 100, -76, 12, -9];
sortedArrayIntoSet(arrOfNumbers);
Sorted array: [-76, -9, -9, 12, 12, 23, 100, 20000]
As Set: Set(6) {-76, -9, 12, 23, 100, 20000}

Optimized One-Line Solution

const numbers = [50, 10, 40, 20, 30, 10];
const sortedSet = new Set(numbers.sort((a, b) => a - b));
console.log("Optimized result:", sortedSet);
Optimized result: Set(5) {10, 20, 30, 40, 50}

Time Complexity

The Array.sort() method uses Timsort algorithm with O(n log n) average time complexity and O(n²) worst-case complexity. Creating the Set is O(n).

Conclusion

To sort an array of numbers into a Set, first sort the array using a numeric compare function, then convert it to a Set. This approach handles JavaScript's string-based sorting behavior and removes duplicates effectively.

Updated on: 2026-03-15T23:19:00+05:30

347 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements