我正在谈论的代码: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);
答案 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);
}