Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中对数组进行数字排序_Javascript_Arrays_Sorting - Fatal编程技术网

在Javascript中对数组进行数字排序

在Javascript中对数组进行数字排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,你好, 我不熟悉stackoverflow和编码,所以我希望您不介意我问这样一个琐碎的问题 我了解到对数组进行数字排序的方法如下。 我也知道更简单的ES6版本 var ax=[],bx=[]; 函数排序编号(a,b){ 推力(a); bx.推(b); 返回a-b; } var numArray=[140000,104,99,2]; numArray.sort(sortNumber); log('array='+numArray); console.log('a='+ax); log('b='+

你好,

我不熟悉stackoverflow和编码,所以我希望您不介意我问这样一个琐碎的问题

我了解到对数组进行数字排序的方法如下。 我也知道更简单的ES6版本

var ax=[],bx=[];
函数排序编号(a,b){
推力(a);
bx.推(b);
返回a-b;
}
var numArray=[140000,104,99,2];
numArray.sort(sortNumber);
log('array='+numArray);
console.log('a='+ax);
log('b='+bx)
有人能告诉我a和b是如何确定的吗

这完全取决于JavaScript引擎的
sort
实现。所有这一切告诉我们的是,它们将是需要比较的数组条目,以便
排序算法能够完成它的工作

如果您愿意,您可以看到V8的实现,它是。(V8是Chromium、Chrome、Brave和Node.js中使用的JavaScript引擎。)


我应该注意到,V8没有使用您问题中显示的
a
b
的值,它使用
104
99
2
表示
a
140000
104
99
表示
b

您可以在此处查看当前浏览器中的JavaScript引擎使用的浏览器:

var avalues=[];
var bvalue=[]
函数排序编号(a,b){
console.log(“a=“+a+”,b=“+b”);
推(a);
b值推送(b);
返回a-b;
}
var numArray=[140000,104,99,2];
numArray.sort(sortNumber);
log(“完成,结果:”,numArray.join(“,”);
log(“a值:”,avalues.join(“,”);

log(“b值:”,bvalue.join(“,”)我想你的问题是这个排序功能是如何工作的

  • 排序函数需要比较函数(比如需要根据什么对数组进行排序。它可以是任何东西)
  • 在上面的sortNumber函数中,a和b只不过是numaray的两个值。 示例-调用
    numaray.sort(sortNumber)
    时;它将相互调用数组中的所有元素(您需要比较每个元素)。 如果
    a-b>0
    ,则a大于b。 如果
    a-b<0
    ,则b大于a。 如果
    a-b=0
    ,则两者相等。 将在所有元素[140000、104、99、2]上检查此条件
    希望这能有所帮助。

    我只是在这种情况下使用lodash

    _.sortBy([140000, 104, 99, 2]) // => [2, 99, 104, 140000]
    

    我不认为这是正在发生的事情。您是如何确定
    a
    b
    的那些值的?
    a
    b
    没有这些值。尝试在排序函数中使用console.log
    console.log('a:',a,'b:',b)
    。您是如何得出这些值的?我很好奇您使用的浏览器/JavaScript引擎为您提供了这些值。。。?它似乎不是Edge或IE11中V8(Chrome)、SpiderMonkey(Firefox)或ChakraCore的当前版本。是的,我使用Firefox中playcode.io上的console.log()确定了这些值。但正如我从这里的答案中了解到的,这些值是随机选择的,不同的JavaScript引擎可能会有所不同。@laines-它们不是随机选择的。它们是由
    sort
    实现非常仔细地选择的。我看不到您在Firefox中显示的值,但我们可能使用不同的版本
    sort
    最近在多个JavaScript引擎中发生了变化,变成了稳定排序(stable=相等的元素不会相对移动)。