例如,我有一个像这样的数组:
var a = new Int32Array([3,8,6,1,6,9]);
当我尝试调用a.sort()
时,它无法工作。
对于排序类型数组,最好的方法是什么? 关于性能方面,我们能否比普通数组更快地对类型数组进行排序?
var a = new Int32Array([3,8,6,1,6,9]);
当我尝试调用a.sort()
时,它无法工作。
对于排序类型数组,最好的方法是什么? 关于性能方面,我们能否比普通数组更快地对类型数组进行排序?
JavaScript数组方法的定义方式使它们适用于任何“类似数组”的对象,而不仅仅是实际的Array
实例。因此,您可以使用以下内容:
Array.prototype.sort.call(a, function(a, b) { return a - b; });
自定义回调函数是必要的,因为JS默认按字典顺序对值进行排序。另请参见如何正确地对整数数组进行排序。
var a = new Int32Array([3, 8, 6, 1, 6, 9]);
console.log(a.sort()); // [1, 3, 6, 6, 8, 9]
虽然有一些差异,例如默认比较函数方面:
[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]
[].sort.call(a)
吗? - Felix KlingArray.prototype.call
) - zerkmsTypedArray.prototype.sort
:https://dev59.com/pXzaa4cB1Zd3GeqPSJxt#37684611 - le_m