首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回1或-1如何在array.sort (a>b) (JS)中工作/方法?询问methos array.sort的处理过程

返回1或-1如何在array.sort (a>b) (JS)中工作/方法?询问methos array.sort的处理过程
EN

Stack Overflow用户
提问于 2019-05-10 21:32:27
回答 1查看 660关注 0票数 0

我不知道在js中返回1或-1在array.sort中意味着什么。

代码语言:javascript
复制
    const hola = [0, 4, 10, 60, 5]
const holaSorted = hola.sort(function(a,b) {
    if (a>b) {
        return -1;
    } else {
    return 1;
  } 
});
console.log(holaSorted);

Console.table(HolaSorted);

60、10、5、4、0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-11 00:10:24

首先,如上所述,MDN排序描述非常好。

但我们可以在这里简化:

当我们调用sort时,它允许我们在任何给定的时间提供一个function来计算array的两个elements

function应该返回:

  • 如果negative值为a < b
  • 如果positive值为a > b
  • 以及0 if a === b.

然后,sort函数将使用该值分别对这两个元素进行排序。

代码语言:javascript
复制
// Number ordering is very straight forward. 
const hola = [0, 4, 10, 60, 5]
const holaSorted = hola.sort((a,b) => a-b); 
console.log(holaSorted);

// reverse the order.
const holaSorted2 = hola.sort((a,b) => b-a);
console.log(holaSorted);

但并不是所有的东西都是简单的数字,我们通常希望对对象进行排序,这是提供自定义评估器的更重要的地方。

下面我们使用name进行排序,我们需要根据字符串比较传回1 || -1 || 0

代码语言:javascript
复制
const people = [
  {
    name: 'Bob',
    age: 20
  },
  {
    name: 'Anne',
    age: 50,
  },
  {
    name: 'Terry',
    age: 5
  }
];

// Order by name
const byName = people.sort((a,b) => (a.name < b.name) ? -1 : (a.name > b.name) ? 1 : 0);

console.log(byName);

// Order by age
const byAge = people.sort((a, b) => a.age-b.age);

console.log(byAge);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56085083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档