Subjects

All subjects Django Java Python React Spring Boot JavaScript PHP
Sign Up Free
Question 6 of 10 · Array Methods
Interview question

How do sort() and reverse() work, and why should you be careful with sort()? sort() और reverse() कैसे काम करते हैं, और sort() से सावधान क्यों रहें?

Answer

Both sort() and reverse() mutate the original array. sort() converts elements to strings by default, which produces incorrect results for numbers unless a compare function is provided.

// DEFAULT sort() - converts to strings, sorts lexicographically
const numbers = [10, 1, 21, 2];
console.log(numbers.sort());
// [1, 10, 2, 21] - WRONG for numeric sorting! '10' < '2' as strings

// CORRECT numeric sort - provide a compare function
const ascending = [10, 1, 21, 2].sort((a, b) => a - b);
console.log(ascending); // [1, 2, 10, 21]

const descending = [10, 1, 21, 2].sort((a, b) => b - a);
console.log(descending); // [21, 10, 2, 1]

// sort() MUTATES the original array
const original = [3, 1, 2];
const sorted = original.sort();
console.log(original === sorted); // true - same array reference!
console.log(original); // [1, 2, 3] - original changed

// Non-mutating sort using spread to copy first
const safeCopy = [...original].sort((a, b) => a - b);

// Sorting objects by a property
const users = [{ name: 'Charlie', age: 35 }, { name: 'Alice', age: 25 }];
users.sort((a, b) => a.age - b.age);
console.log(users); // Alice first (25), then Charlie (35)

// Sorting strings alphabetically (works correctly by default for strings)
const names = ['Charlie', 'Alice', 'Bob'];
names.sort();
console.log(names); // ['Alice', 'Bob', 'Charlie']

// reverse() also MUTATES the original
const arr = [1, 2, 3];
arr.reverse();
console.log(arr); // [3, 2, 1] - original mutated

// Non-mutating reverse
const reversedCopy = [...arr].reverse();

sort() और reverse() दोनों original array को mutate करते हैं। sort() default में elements को strings में convert करता है, जो numbers के लिए गलत results देता है जब तक compare function न दिया जाए।

// DEFAULT sort() - strings में convert करता है
const numbers = [10, 1, 21, 2];
console.log(numbers.sort());
// [1, 10, 2, 21] - numbers के लिए गलत!

// सही numeric sort
const ascending = [10, 1, 21, 2].sort((a, b) => a - b);
console.log(ascending); // [1, 2, 10, 21]

const descending = [10, 1, 21, 2].sort((a, b) => b - a);
console.log(descending); // [21, 10, 2, 1]

// sort() original को MUTATE करता है
const original = [3, 1, 2];
const sorted = original.sort();
console.log(original === sorted); // true - same reference!
console.log(original); // [1, 2, 3]

// Non-mutating sort - copy पहले बनाना
const safeCopy = [...original].sort((a, b) => a - b);

// Objects को property से sort करना
const users = [{ name: 'Charlie', age: 35 }, { name: 'Alice', age: 25 }];
users.sort((a, b) => a.age - b.age);

// reverse() भी MUTATE करता है
const arr = [1, 2, 3];
arr.reverse();
console.log(arr); // [3, 2, 1]

// Non-mutating reverse
const reversedCopy = [...arr].reverse();

Was this answer clear?