在iPhone上调用Javascript中的sort(函数)时,它似乎没有排序。 例如:
devices.sort(function(a, b) {
return a.name > b.name;
});
是否存在一些已知限制,或者有人可以帮助我在iPhone上执行此操作。它似乎在Chrome,IE,Firefox中运行良好。
答案 0 :(得分:8)
您的比较函数已被破坏:它应返回一个数值,如果a < b
则为负数,如果为a = b
则为零,如果为a > b
则为正数,即
function(a, b) {
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
}
如果false
a.name < b.name
,您的函数将返回0
,这将转换为{{1}},因此值应视为相等。它根本不起作用,但如果确实如此,这是巧合(即取决于排序算法和/或输入集)。
答案 1 :(得分:0)
sort函数需要返回-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;
}
});
答案 2 :(得分:0)
你必须明确地返回-1,0或1,根据我猜这个函数的定义。我的坏。
devices.sort(function(a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
});
立即行动。