Javascript 数组排序在Android手机上不起作用,但在emulator和AIR中起作用

Javascript 数组排序在Android手机上不起作用,但在emulator和AIR中起作用,javascript,android,arrays,sorting,cordova,Javascript,Android,Arrays,Sorting,Cordova,我有一个奇怪的问题(或者至少作为一个新手程序员我无法理解) 我有一个javascript应用程序,是我不久前编写的,用于AdobeAIR,它从服务器收集一些登录/注销数据,然后在屏幕上按登录名排序显示 以时间戳时间顺序接收数据;例如,这里是返回的数据的前三行,然后将其解析到数组中。行格式为时间戳、名称、当前状态、上次状态更改 Wed 1/18/2012 at 2:06 pm, Tanya, offline, Wed 1/18/2012 at 12:04 pm Wed 1/18/2012 at 2

我有一个奇怪的问题(或者至少作为一个新手程序员我无法理解)

我有一个javascript应用程序,是我不久前编写的,用于AdobeAIR,它从服务器收集一些登录/注销数据,然后在屏幕上按登录名排序显示

以时间戳时间顺序接收数据;例如,这里是返回的数据的前三行,然后将其解析到数组中。行格式为时间戳、名称、当前状态、上次状态更改

Wed 1/18/2012 at 2:06 pm, Tanya, offline, Wed 1/18/2012 at 12:04 pm
Wed 1/18/2012 at 2:15 pm, Trav, offline, Wed 1/18/2012 at 2:05 pm
Wed 1/18/2012 at 2:22 pm, Trav, online, Wed 1/18/2012 at 2:15 pm  
我最近修改了该应用程序,以便将其移植到移动设备上。 请注意,我正在使用PhoneGap Build来构建我的移动应用程序,因为我没有足够的知识来尝试使用SDK来实现这一点,所以我不确定这是否也是问题的一部分

当我在Android emulator中运行我的AIR应用程序或移动版本时,我的输出按名称分组,然后登录/注销详细信息按时间顺序排列在名称中

但是-当我在我的移动设备(HTC Desire HD)上运行我的应用程序时,输出仍然是按名称分组的,但由于某种原因,每个名称下的数据不再按时间顺序排列,而且看起来顺序相当随机

代码的关键位如下所示

function byName (a, b) {return a[0] == b[0] ? 0 : a[0] < b[0] ? -1 : 1}  


var HistoryArr = new Array();
z = 0;
for (var i = 2; i < myArr.length - 1; i += 4) {
   HistoryArr[z] = new Array(myArr[i+1], myArr[i], myArr[i + 2], myArr[i + 3]);
   z++;
}

HistoryArr.sort(byName);
函数名(a,b){返回a[0]==b[0]?0:a[0]
我不确定我是否应该以不同的方式进行排序,但让我困惑的是,它在空中运行良好,而android仿真器只是不在手机上

因此,任何想法或建议都将不胜感激


谢谢

您可能需要确保数组也按时间戳排序(作为辅助索引)

函数比较(a,b){返回a==b?0:a
您可能需要确保数组也按时间戳排序(作为辅助索引)

函数比较(a,b){返回a==b?0:a
谢谢朱利安,我尝试了上面的代码,但是我的模拟器也对日期进行了错误排序。然后我意识到时间戳中有一个“at”,这可能会导致排序问题。因此,我在构建数组时使用Date.parse转换了时间戳,现在它可以进行排序了。谢谢你的帮助。谢谢朱利安,我尝试了上面的代码,但是我的模拟器也对日期进行了错误的排序。然后我意识到时间戳中有一个“at”,这可能会导致排序问题。因此,我在构建数组时使用Date.parse转换了时间戳,现在它可以进行排序了。谢谢你的帮助。
function compare(a, b) { return a == b ? 0 : a < b ? -1 : 1;}

function byNameAndTimestamp (a, b) {
    return a[0] == b[0] ? compare(a[1], b[1]) : compare(a[0], b[0]);
}