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

时间:2018-11-22 14:27:14

标签: javascript arrays google-chrome sorting ecmascript-6

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

arr.sort((a,b)=>a.name > b.name);

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

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

enter image description here

我认为代码没有错。我不知道为什么代码无法正常工作。

1 个答案:

答案 0 :(得分:4)

.sort()回调必须返回数字,而不是布尔值。返回值应为:

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

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

arr.sort((a,b) => a.name.localeCompare(b.name));