为什么 Array.prototype.sort() 在 Chrome 开发工具中不起作用?

eje*_*eje 1 javascript arrays sorting google-chrome ecmascript-6

const arr = [{name:'Suzanne'},{name:'Jim'},{name:'Trevor'},{name:'Amanda'}];

arr.sort((a,b)=>a.name > b.name);
Run Code Online (Sandbox Code Playgroud)

我想按字母顺序(A->Z)对数组名称中的元素(对象)进行排序。当我使用 node(v8.4.0) 和 safari 开发工具(控制台)中的代码时,它运行良好。

但它在 chrome 开发工具控制台(v70.0.3538.110)中不起作用。chrome 控制台中有代码的结果。

在此处输入图片说明

在我看来,代码没有错。我不知道为什么代码不能正常工作。

Poi*_*nty 6

.sort()回调函数必须返回一个号码,而不是一个布尔值。返回值应该是:

  • 如果第一个元素应该第二个元素之前,则为负数;
  • 如果第一个元素应该第二个元素之后,则为正数;
  • 如果两个元素的顺序相同,则为零。

对于字符串,您可以使用以下.localeCompare()方法:

arr.sort((a,b) => a.name.localeCompare(b.name));
Run Code Online (Sandbox Code Playgroud)