所以我试图在React Native中实现一种数据表视图。我真正需要做的就是对列进行排序。我要排序的数据结构有点像这样:
[
[
element,
element,
(9 elements per array)
],
[
element,
element,
(9 elements per array)
]
]
在基本数组中总共有170多个数组,每个子数组都有9个元素。
我基本上可以使用以下方法完成排序:
return items.sort(function(a,b) {
return a[col].value > b[col].value ? 1:-1
})
我遇到的问题是排序需要一两秒钟。我没有注意到网络数据表的这种延迟,所以我想知道是否应该使用某种排序算法来进行更快的排序?我是否应该以不同的方式构造数据结构(尽管我通过拥有一组对象获得相似的结果)?
答案 0 :(得分:1)
您可以将排序功能缩短为
items.sort(function(a,b) {
return a[col].value - b[col].value;
})
但是即使那样,您在速度上也不会看到太多改进。如果您不希望数据经常更改,则记忆可能有助于后续调用。是否可以在同一屏幕上看到所有170个元素?如果没有,则可以考虑使用延迟加载(对前30个元素进行排序,显示结果,然后考虑其余数据)。
答案 1 :(得分:1)
使用Javascript的Array.prototype.sort()排序170个项目的时间不应超过几毫秒,因此很可能是呈现问题。
最好将这种排序逻辑与渲染分开,以便可以对其进行单元测试和度量。
答案 2 :(得分:0)
您可以消除三元运算-只需使用减法即可:
return a[col].value - b[col].value;
如果它们是字符串,而不是数字:
return a[col].value.localeCompare(b[col].value);