Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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,我想了解排序方法在JavaScript中是如何工作的,我知道排序有一个用于比较的默认函数,但我想传递一个函数并了解它是如何处理函数的 我想按字母顺序对下面的数组[a,d,c,a,z,g]进行排序,但是当我使用arr.sorta方法时,b=>a>b;返回相同的数组而不进行排序 请,任何人都可以解释给我听 我正在学习JavaScript,并试图理解数组中的方法,比如map、reduce和filter,但我被sort方法卡住了 结果是[a,d,c,a,z,g],但我想要[a,a,c,d,g,z] 我知

我想了解排序方法在JavaScript中是如何工作的,我知道排序有一个用于比较的默认函数,但我想传递一个函数并了解它是如何处理函数的

我想按字母顺序对下面的数组[a,d,c,a,z,g]进行排序,但是当我使用arr.sorta方法时,b=>a>b;返回相同的数组而不进行排序

请,任何人都可以解释给我听

我正在学习JavaScript,并试图理解数组中的方法,比如map、reduce和filter,但我被sort方法卡住了

结果是[a,d,c,a,z,g],但我想要[a,a,c,d,g,z]


我知道如果使用不带参数的sort方法,算法会对其进行排序,但我想了解为什么它不带参数。

嗨,如果使用自定义函数,则会返回负数、零或正值,如:

0、1或-1

当您返回0时,这意味着A值===小于B,不需要任何更改 当您返回一个负数(如-1)时,sort函数将把a排序为低于B的值。
当您返回一个正数(如1)时,排序函数会将a排序为高于B的值。

嗨,如果您使用的是自定义函数,则会返回一个负数、零或正值,如:

0、1或-1

当您返回0时,这意味着A值===小于B,不需要任何更改 当您返回一个负数(如-1)时,sort函数将把a排序为低于B的值。
当您返回一个正数(如1)时,排序函数会将a排序为高于B的值。

您的函数返回的是布尔值,但应该返回一个数字。让我们看看布尔值在转换为数字时会发生什么变化:

console.log((3>2)+0); // returns 1
console.log((3==2)+0); // returns 0
console.log((3<2)+0); // returns 0
因此,当a==b和a>b时,最终得到相同的整数值


根本的问题是,您需要一个返回三个可能值的函数,即0、-1和1。

您的函数返回的是布尔值,但应该返回一个数字。让我们看看布尔值在转换为数字时会发生什么变化:

console.log((3>2)+0); // returns 1
console.log((3==2)+0); // returns 0
console.log((3<2)+0); // returns 0
因此,当a==b和a>b时,最终得到相同的整数值

根本的问题是,您需要一个返回三个可能值的函数,即0、-1和1。

设arr=[a,d,c,a,z,g]; document.querySelectorsorted.innerHTML=arr.sorta,b=>{ 如果a>b{ 返回1; }否则,如果a{ 如果a>b{ 返回1; }否则,如果a参见:arr.sorta,b=>a.localeCompareb;该方法需要一个差异而不是布尔值,但您可以不带参数调用该方法:console.logarr.sort;谢谢你的夸奖,关于地方功能的比较,我的目标是b。地方功能比较1,我的关系是ASCII,我的功能是esto:arr.sort b,A=>A.charCodeAt-b.charCodeAt见此:arr.sorta,b=>A.localecompa;该方法需要一个差异而不是布尔值,但您可以不带参数调用该方法:console.logarr.sort;谢谢你的夸奖,地方功能比较我的目标的问题,是b。地方功能比较我的目标1,我的目标是ASCII,我的功能是esto:arr.sort b,A=>A.charCodeAt-b.charCodeAt好的,我现在知道了,用我的函数,我永远不会得到负值,排序不起作用。好吧,我现在得到了,用我的函数,我永远不会得到负值,排序不起作用。就是这样,非常感谢。就是这样,非常感谢。哦,谢谢,这是我的问题,我的函数不会返回负数进行比较。哦,谢谢,这是我的问题,我的函数不会为该比较返回负数。