当在iPhone上的Javascript中调用sort(function)时,它似乎没有排序.例如:
devices.sort(function(a, b) {
return a.name > b.name;
});
Run Code Online (Sandbox Code Playgroud)
是否有一些已知的限制或有人可以帮助我在iPhone上如何做到这一点.它似乎在Chrome,IE,Firefox中运行良好.
您的比较函数被破坏:它应该返回一个必须为负数的数值,如果a < b为零,则为a = bif a > b,即
function(a, b) {
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
}
Run Code Online (Sandbox Code Playgroud)
您的函数返回falseif a.name < b.name,它将被转换为0,因此意味着值应被视为相等.它根本不应该工作,但如果确实如此,这是巧合(即取决于排序算法和/或输入集).
排序函数需要返回-1、0或1。
devices.sort(function(a, b) {
if (a.name < b.name) {
return -1;
} else if (a.name == b.name) {
return 0; // ambiguous
} else {
return 1;
}
});
Run Code Online (Sandbox Code Playgroud)