TypeError: invalid Array.prototype.sort argument
The JavaScript exception "invalid Array.prototype.sort argument" occurs when the argument ofArray.prototype.sort()
(and its related methods:Array.prototype.toSorted()
,TypedArray.prototype.sort()
,TypedArray.prototype.toSorted()
) isn't eitherundefined
or a function which compares its operands.
Message
TypeError: The comparison function must be either a function or undefined (V8-based)TypeError: invalid Array.prototype.sort argument (Firefox)TypeError: non-function passed to Array.prototype.toSorted (Firefox)TypeError: invalid %TypedArray%.prototype.sort argument (Firefox)TypeError: Array.prototype.sort requires the comparator argument to be a function or undefined (Safari)TypeError: Array.prototype.toSorted requires the comparator argument to be a function or undefined (Safari)TypeError: TypedArray.prototype.sort requires the comparator argument to be a function or undefined (Safari)TypeError: TypedArray.prototype.toSorted requires the comparator argument to be a function or undefined (Safari)
Error type
What went wrong?
The argument ofArray.prototype.sort()
(and its related methods:Array.prototype.toSorted()
,TypedArray.prototype.sort()
,TypedArray.prototype.toSorted()
) is expected to be eitherundefined
or a function which compares its operands.
Examples
Invalid cases
js
[1, 3, 2].sort(5); // TypeErrorstudents.toSorted("name"); // TypeError
Valid cases
js
[1, 3, 2].sort(); // [1, 2, 3][1, 3, 2].sort((a, b) => a - b); // [1, 2, 3]students.toSorted((a, b) => a.name.localeCompare(b.name));