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