按字母排序数组将无法正常工作
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);
}
我说的代码: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);
}