我开始使用React Native构建一款应用,用于记录我的遥控汽车的圈速。我有一个带有TCP连接(服务器)的Arduino板,每个圈速时,该Arduino会将当前时间/圈速发送给所有已连接的客户端,如下所示:
{"tx_id":33,"last_time":123456,"lap":612}
在我的程序中(使用react-native开发),我有一个叫做
dados
的状态,其结构如下:dados[tx_id] = {
tx_id: <tx_id>,
last_time:,
best_lap:0,
best_time:0,
diff:0,
laps:[]
};
这个程序连接到Arduino,当接收到一些数据时,就将其 push
到这个状态。更具体地说,在每个transponder的 laps
数组中。最终,我得到了类似于这样的结果:
dados[33] = {
tx_id:33,
last_time: 456,
best_lap: 3455,
best_time: 32432,
diff: 32,
laps: [{lap:1,time:1234},{lap:2,time:32323},{lap:3,time:3242332}]
}
dados[34] = {
tx_id:34,
last_time: 123,
best_lap: 32234,
best_time: 335343,
diff: 10,
laps: [{lap:1,time:1234},{lap:2,time:32323},{lap:3,time:3242332}]
}
dados[35] = {
tx_id:35,
last_time: 789,
best_lap: 32234,
best_time: 335343,
diff: 8,
laps: [{lap:1,time:1234},{lap:2,time:32323},{lap:3,time:3242332},{lap:4,time:343232}]
}
这些数据使用
map
函数呈现在View
中(而不是FlatList
)。现在我的问题是,在打印到屏幕之前,我需要对这些数据进行排序。现在,使用此代码,数据使用
tx_id
作为顺序进行打印,因为它是主数组的键。有没有一种方法可以按照laps
属性中的元素数量对数组进行排序,并且第二个选项是使用元素的last_time
属性进行排序?在这种情况下,我的示例中最后一个
tx
(35
)将成为列表中的第一个,因为它比其他元素多一个圈。第二个项目将是34
(因为last_time
)。第三个将是tx
33
。在JavaScript中是否有任何方法来实现这一点,还是我需要创建自定义函数并以递归方式检查每个项?!