按字母排序数组将无法正常运行

时间:2016-06-14 13:55:58

标签: javascript arrays sorting alphabetical

我正在谈论的代码:https://jsfiddle.net/sbe8yzv0/8/

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

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

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

按长度排序按预期工作,除非它在长度之后进行alpabeticly排序。我如何确保以正确的方式排序?

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

2 个答案:

答案 0 :(得分:2)

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;
    }

答案 1 :(得分:1)

问题的第二部分,为了在长度排序后保持字母排序,你可以使用localeCompare方法的逻辑OR。

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