Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 Array.prototype.sort()返回错误的顺序_Javascript - Fatal编程技术网

Javascript Array.prototype.sort()返回错误的顺序

Javascript Array.prototype.sort()返回错误的顺序,javascript,Javascript,我想用对象对数组进行排序。退回的订单是错误的 $document.ready=>{ 常量级别=[ 新阶段5,23, 新阶段6,25, 新阶段29、27、, 新阶段36、33、, 新阶段21、37、, 新阶段34、51、, 新阶段37、54、, 新阶段30、58、, 新阶段12、68、, 新阶段38、70、, 新阶段10,47 ]; level.sorta,b=>a.position1,false=>0,然后根据上述规则使用。根据浏览器实现的排序算法,规范和精确输入数据中未定义精确算法,这可能在

我想用对象对数组进行排序。退回的订单是错误的

$document.ready=>{ 常量级别=[ 新阶段5,23, 新阶段6,25, 新阶段29、27、, 新阶段36、33、, 新阶段21、37、, 新阶段34、51、, 新阶段37、54、, 新阶段30、58、, 新阶段12、68、, 新阶段38、70、, 新阶段10,47 ]; level.sorta,b=>a.position 如果A在b之前,则为负数 如果A在b之后,则为正数 如果a和b在排序方面等效,则为零 回调函数返回的是布尔值,而不是数字。该布尔值被强制为true=>1,false=>0,然后根据上述规则使用。根据浏览器实现的排序算法,规范和精确输入数据中未定义精确算法,这可能在有限的情况下有效,但在不同的数据或稍有不同的算法中无效

你的

是按位置升序排序的正确方法

$document.ready=>{ 常量级别=[ 新阶段5,23, 新阶段6,25, 新阶段29、27、, 新阶段36、33、, 新阶段21、37、, 新阶段34、51、, 新阶段37、54、, 新阶段30、58、, 新阶段12、68、, 新阶段38、70、, 新阶段10,47 ]; level.sorta,b=>a.position-b.position; 控制台。日志级别; }; 功能StagestageId,stagePosition{ this.id=stageId; 这个位置=阶段位置; }
您的分拣条件不正确。使用a.position-b.position这是因为排序希望返回一个数字值,而不是布尔值

$document.ready=>{ 常量级别=[ 新阶段5,23, 新阶段6,25, 新阶段29、27、, 新阶段36、33、, 新阶段21、37、, 新阶段34、51、, 新阶段37、54、, 新阶段30、58、, 新阶段12、68、, 新阶段38、70、, 新阶段10,47 ]; level.sorta,b=>a.position-b.position; 控制台。日志级别; }; 功能StagestageId,stagePosition{ this.id=stageId; 这个位置=阶段位置; }
sort需要的是数字返回类型,而不是布尔类型,因为他知道它是有效的。不知何故,这总是有效的。他在问为什么。@cool。谢谢兄弟的建议这种问题经常出现。你知道一个规范的答案吗?@NinaScholz-不,如果我知道,我会投票关闭。这个问题与通常的问题略有不同,虽然通常的答案是好的,但无论如何都会回答。但我正在看…:-@NinaScholz——找到了一个更准确的好答案,一个有着可靠答案的好答案,但我不会称之为经典。也许我们可以让它成为一个新的规范-昨天我遇到了一个类似的问题,关于使用比较结果和edge是否排序不正确的问题。
level.sort((a, b) => a.position - b.position);