Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按字母表排序数组将无法正常工作_Javascript_Arrays_Sorting_Alphabetical - Fatal编程技术网

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

Javascript 按字母表排序数组将无法正常工作,javascript,arrays,sorting,alphabetical,Javascript,Arrays,Sorting,Alphabetical,我所说的代码: 我想用两个按钮按名称对数组排序:第一个按钮按长度排序,第二个按钮按字母表排序 当我按字母表排序时,它不想运行。它随机将数据放在不同的位置。我尝试过多种排序方法,但它们都表现得很古怪,而且不完全按字母顺序排序。我该怎么做才能让它真正按照字母表对数组中的名称进行排序 function sortNameAlphabetically(a, b) { return a.name > b.name; } “按长度排序”按预期工作,除非它在“长度”之后按

我所说的代码:

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

当我按字母表排序时,它不想运行。它随机将数据放在不同的位置。我尝试过多种排序方法,但它们都表现得很古怪,而且不完全按字母顺序排序。我该怎么做才能让它真正按照字母表对数组中的名称进行排序

    function sortNameAlphabetically(a, b) {
        return a.name > b.name;
    }
“按长度排序”按预期工作,除非它在“长度”之后按字母顺序进行排序。我如何确保它的排序正确

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

按字母顺序将
sortname
方法更改为

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

另外,
sortNameByLength
方法中return语句之后的语句是不可访问的,并且无论如何都不是必需的

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

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

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

令人惊叹的。你知道我如何解决第二个问题吗?@Thomasdc干脆
返回a.name.length-b.name.length但是在按长度排序之后,我如何让它按字母顺序排序呢?所以如果我有ABA,BBBB,AAAA,AAA。它应该是AAAA,BBBB,AAA,ABA。我已经试过了,它不起作用。什么也没发生。请尝试编辑。你需要地址的名称属性。非常好。非常感谢!:)