如何在javascript中对类型化数组进行排序?

时间:2014-02-18 00:20:21

标签: javascript performance typed-arrays

例如我输入了这样的数组:

var a = new Int32Array([3,8,6,1,6,9]);

当我尝试拨打a.sort()时,它无效。

对类型化数组进行排序的最佳方法是什么? 性能如何,我们能否比常规数组更快地对类型化数组进行排序?

2 个答案:

答案 0 :(得分:6)

JavaScript数组方法的定义方式使它们适用于任何类数组对象,而不仅仅适用于Array的实际实例。所以你可以使用:

Array.prototype.sort.call(a, function(a, b) { return a - b; });

自定义回调是必要的,因为JS默认按字典顺序对值进行排序。另请参阅How to sort an array of integers correctly

答案 1 :(得分:2)

ECMAScript 2015语言规范引入了.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]




虽然存在一些差异,e。 G。关于默认比较功能:

  

[TypedArray.prototype.sort]执行数字比较,而不是[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]