Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
当我们使用像a-b这样的东西时,排序函数在javascript中是如何工作的(我想知道在后台发生了什么)_Javascript_Sorting - Fatal编程技术网

当我们使用像a-b这样的东西时,排序函数在javascript中是如何工作的(我想知道在后台发生了什么)

当我们使用像a-b这样的东西时,排序函数在javascript中是如何工作的(我想知道在后台发生了什么),javascript,sorting,Javascript,Sorting,我是javascript编程新手,我试图理解排序函数,比如为什么我们使用减法作为排序示例 const movies = [ { title: 'a', year: 2018, rating: 3}, { title: 'b', year: 2018, rating: 4.7}, { title: 'c', year: 2018, rating: 5}, { title: 'd', year: 2017, rating: 6.5} ]; const titles

我是javascript编程新手,我试图理解排序函数,比如为什么我们使用减法作为排序示例

const movies = [
    { title: 'a', year: 2018, rating: 3},
    { title: 'b', year: 2018, rating: 4.7},
    { title: 'c', year: 2018, rating: 5},
    { title: 'd', year: 2017, rating: 6.5}
];


const titles = movies
    .sort((x, y) => x.rating - y.rating )
    .map(m => m.title)

console.log(titles)

这段代码按升序返回电影,但我不明白为什么要从y.rating中减去x.rating。就像背景中发生的事情一样,减去它们如何给出升序,x-y是完全有意义的,因为如果x小于y,返回值将为负值。如果x大于y,则返回值为正值。排序(a,b)的约定是,负返回值表示a小于b(升序第一),正返回值表示a大于b(升序第二)。当然
0
意味着它们是相同的,因此可以按任意顺序排列。

x-y
非常合理,因为如果x小于y,返回值将为负值。如果x大于y,则返回值为正值。排序(a,b)的约定是,负返回值表示a小于b(升序第一),正返回值表示a大于b(升序第二)。当然
0
表示它们是相同的,因此可以按任意顺序排列。

请查看文档:,回调的返回值反映了两个项目的实际顺序。按
评级中的差异排序
生成一个按字母顺序排列的列表,这一事实在这里只是巧合。我检查了它,我可以处理不同的评级值。我特意将评级按升序排列,我只想知道它何时出现减去它是否将答案与初始值进行比较,就像它是否总是将sutracted value与3进行比较请查看文档:,回调的返回值反映了两个项目的实际顺序。按
评级中的差异排序
生成一个按字母顺序排列的列表,这一事实在这里只是巧合。我检查了它,我可以处理不同的评级值。我特意将评级按升序排列,我只想知道它何时出现减法它是否将答案与初始值进行比较,就像它是否总是将被减法的值与3oh进行比较一样,所以说它是根据减去两个数字的值进行排序的,如果是这样的话,它是否将每个数字减去3???因为这会得到1.7,2,3.5的结果,这是正确的order@naveed不。在排序(a,b)中,a和b是数组中两个不同的元素,函数比较它们的相对顺序,你能详细说明一下吗?我很困惑,你能告诉我减去这些数字会得到什么输出吗?@naveed我现在不知道我能更清楚地描述什么了,所以你说它是根据减去两个数的值排序的,如果是这样的话它用3减去每个数字吗???因为这会得到1.7,2,3.5的结果,这是正确的order@naveed不。在排序(a,b)中,a和b是数组中两个不同的元素,函数是比较它们之间的相对顺序,你能详细说明一下吗?我很困惑,你能告诉我减去这些数字会得到什么结果吗?@naveed我现在不知道我能更清楚地描述什么了