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

时间:2009-09-04 15:53:34

标签: javascript iphone

在iPhone上调用Javascript中的sort(函数)时,它似乎没有排序。 例如:

devices.sort(function(a, b) {
                    return a.name > b.name;
                });

是否存在一些已知限制,或者有人可以帮助我在iPhone上执行此操作。它似乎在Chrome,IE,Firefox中运行良好。

3 个答案:

答案 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;
                });

立即行动。