For example I have typed array like this:
var a = new Int32Array([3,8,6,1,6,9]);
When I try to call a.sort(), it doesn't work.
What is the best way to sort typed arrays? What about performance, can we sort typed arrays faster than regular arrays?
JavaScript array methods are defined in such a way that they are applicable to any array-like object, not only to actual instances of Array. So you can use:
Array.prototype.sort.call(a, function(a, b) { return a - b; });
The custom callback is necessary because JS sorts the values lexicographically by default. See also How to sort an array of integers correctly.
The ECMAScript 2015 Language Specification introduced a .sort() method for typed arrays.
var a = new Int32Array([3, 8, 6, 1, 6, 9]);
console.log(a.sort()); // [1, 3, 6, 6, 8, 9]
There are some differences though, e. g. regarding the default compare function:
[TypedArray.prototype.sort] performs a numeric comparison rather than the string comparison used in [Array.prototype.sort].
console.log(new Array([1, 10, 2]).sort()); // [1, 10, 2]
console.log(new Int32Array([1, 10, 2]).sort()); // [1, 2, 10]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With