Javascript .sort() 函数:什么是返回 0、返回 -1 和返回 1?

Oct*_*vio 6 javascript sorting

我正在学习 Javascript,目前正在学习数组的 .sort() 函数。我知道它可以不接受任何争论,也可以在 ab 和 ba 之间进行争论。

然而,我不明白的是使用return 0,return -1return 1。这是一个示例(来源:http : //www.codewars.com/kata/572df796914b5ba27c000c90):

var arr=[1,2,3,4,5,6,100,999]
arr.sort((a,b)=>{
  if (a%2==b%2) return a-b;
  if (a%2>b%2) return -1;
  return 1;
})
console.log(arr)

//output: [ 1, 3, 5, 999, 2, 4, 6, 100 ]
Run Code Online (Sandbox Code Playgroud)

我明白它应该做什么,即分开奇数和偶数并按升序对它们进行排序。但是return -1and是什么意思return 1呢?有人可以逐步引导我完成此功能吗?

我尝试使用代码并更改一些值,例如更改return -1return 0,以尝试了解它是如何工作的,但我仍然不明白。

我在哪里可以找到有关该return元素的详细信息的资源?

Shu*_*tri 5

根据排序文档

如果提供了参数 functionComparison,则数组的元素将根据比较函数的返回值进行排序。如果 a 和 bare 两个元素进行比较,则:

如果functionComparison(a, b)小于0,我们对索引小于的a进行排序ba将排在前面b

如果functionComparison(a, b) returns 0,我们保持ab相对于彼此不变,但相对于所有其他元素进行排序。注意:ECMAScript 标准不保证此行为,因此所有浏览器(例如 2003 年之前的 Mozilla 版本)都不遵守此行为。如果functionComparison(a, b)大于0,我们b 使用小于 的索引进行排序a

functionComparison(a, b)必须始终从同一对参数返回相同的结果。如果函数返回不一致的结果,则未定义项目的排序顺序。

现在,如果a > breturning 1a positive value是同一个东西,类似地,如果a < b则返回-1difference是相同的。如果both are equaldifference is 0因此return 0


gur*_*372 0

在哪里可以找到包含该返回元素详细信息的资源?

return值是针对comparator函数的。根据规格

如果comparefn不是undefined,则它应该是一个接受两个参数 x 和 y 的函数,如果 x < y,则返回负值;如果 x = y,则返回零;如果 x > y,则返回正值