首页 > 解决方案 > 当我们使用像 ab 这样的东西时,排序函数在 javascript 中如何工作(我想知道后台发生了什么)

问题描述

我是 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。就像在后台发生的事情一样,减去它们如何给出升序

标签: javascriptsorting

解决方案


x - y非常有意义,因为如果 x 小于 y,则返回值为负数。如果 x 大于 y,则返回值为正。sort(a,b) 的约定是负返回值表示 a 小于 b(按升序排列在前),正返回值表示 a 大于 b(按升序排列在后)。当然0意味着它们是相同的,因此它们可以按任意顺序排列


推荐阅读