JavaScript Array#sort()函数使用哪种算法?我知道它可以采取各种各样的参数和函数来执行不同类型的排序,我只是对vanilla排序使用哪种算法感兴趣.
我无法理解为什么以下函数以数字方式对字符串进行排序(在代码的第三部分中).
var myArray = [10, 44, 32, 100, 0, 44, 3, 4];
console.log(myArray.toString()); // 10, 44, 32, 100, 0, 44, 3, 4 --> unsorted
myArray.sort();
console.log(myArray.toString()); // 0,10,100,3,32,4,44,44 --> sorted like strings
// this is what confuses me:
myArray.sort(function (a, b) {
return a - b;
});
console.log(myArray.toString()); // 0,3,4,10,32,44,44,100 --> sorted numerically
Run Code Online (Sandbox Code Playgroud)
特别是:
如何a和b获取填充?
为什么减去a - b按数字顺序对数字进行排序?
如果函数一次仅检查2个数字,那么所有数字如何被分类到正确的顺序?(即a和b)