Luka
Luka

Reputation: 3089

How to sort typed arrays in javascript?

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?

Upvotes: 6

Views: 1176

Answers (2)

le_m
le_m

Reputation: 20228

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]

Upvotes: 3

Felix Kling
Felix Kling

Reputation: 816404

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.

Upvotes: 6

Related Questions