例如我输入了这样的数组:
var a = new Int32Array([3,8,6,1,6,9]);
当我尝试拨打a.sort()
时,它无效。
对类型化数组进行排序的最佳方法是什么? 性能如何,我们能否比常规数组更快地对类型化数组进行排序?
答案 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]