Javascript排序功能无法在iPhone上运行

6 javascript iphone

当在iPhone上的Javascript中调用sort(function)时,它似乎没有排序.例如:

devices.sort(function(a, b) {
                    return a.name > b.name;
                });
Run Code Online (Sandbox Code Playgroud)

是否有一些已知的限制或有人可以帮助我在iPhone上如何做到这一点.它似乎在Chrome,IE,Firefox中运行良好.

Chr*_*oph 9

您的比较函数被破坏:它应该返回一个必须为负数的数值,如果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,因此意味着值应被视为相等.它根本不应该工作,但如果确实如此,这是巧合(即取决于排序算法和/或输入集).


Dun*_*ers 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)