按字母排序数组将无法正常工作

Sorting array by alphabet will not function correctly

我说的代码:https://jsfiddle.net/sbe8yzv0/8/

我想用两个按钮按名称对数组进行排序:第一个按钮按长度排序,第二个按钮按字母排序。

当我按字母排序时,它不起作用。它随机地将数据放在不同的位置。我尝试了多种排序方式,但它们都表现得很古怪,并没有完全按字母顺序排序。我该怎么做才能让它真正按字母对数组中的名称进行排序?

    function sortNameAlphabetically(a, b) {
        return a.name > b.name;
    }

按长度排序按预期工作,除非它在长度后按字母顺序排序时会向后排序。我如何确保它以正确的方式排序?

    function sortNameByLength(a, b) {
        return b.name.length - a.name.length;
        a.localeCompare(b); 

sortNameAlphabetically方法更改为

  function sortNameAlphabetically(a, b) {
        return a.name.localeCompare( b.name );
    }

已更新fiddle

此外,sortNameByLength 方法中 return 语句之后的语句不可访问,也不需要。

    function sortNameByLength(a, b) {
        return b.name.length - a.name.length;
    }

问题的第二部分,要保持长度排序后的字母排序,可以使用逻辑或与localeCompare方法。

function sortNameByLength(a, b) {
    return b.name.length - a.name.length || a.name.localeCompare(b.name);
}