Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript快速排序二维数组_Javascript_Arrays_Algorithm_Sorting_React Native - Fatal编程技术网

Javascript快速排序二维数组

Javascript快速排序二维数组,javascript,arrays,algorithm,sorting,react-native,Javascript,Arrays,Algorithm,Sorting,React Native,因此,我正在尝试用React Native实现一种数据表视图。我真正需要做的就是对列进行排序。我试图排序的数据结构大致如下: [ [ element, element, (9 elements per array) ], [ element, element, (9 elements per array) ] ] 其中,基本数组中总共有170多个数组,每个子数组有9个元素 我基本上可以使用这种方法完成排序: r

因此,我正在尝试用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
})

我遇到的问题是,排序需要很长的时间。我没有注意到web数据表的延迟,所以我想知道是否有某种排序算法应该用于更快的排序?我是否应该以不同的方式构建我的数据(尽管我通过一系列对象获得了类似的结果)?

您可以消除三元运算-只需使用减法:

return a[col].value - b[col].value;
如果它们是字符串而不是数字:

return a[col].value.localeCompare(b[col].value);

您可以消除三元运算-只需使用减法:

return a[col].value - b[col].value;
如果它们是字符串而不是数字:

return a[col].value.localeCompare(b[col].value);

您可以将排序函数缩短为

items.sort(function(a,b) {
   return a[col].value - b[col].value;
})

但即便如此,您可能也看不到速度有多大提高。如果您不希望数据经常更改,则备忘可能有助于连续呼叫。所有170个元素是否在同一屏幕上可见?如果没有,可以考虑使用惰性加载(排序前30个元素,显示结果,然后考虑其余的数据)。
items.sort(function(a,b) {
   return a[col].value - b[col].value;
})

但即便如此,您可能也看不到速度有多大提高。如果您不希望数据经常更改,则备忘可能有助于连续呼叫。所有170个元素是否在同一屏幕上可见?如果没有,可以考虑使用惰性加载(排序前30个元素,显示结果,然后考虑其余的数据)。

< P>使用JavaScript数组排序170个项目。
将排序这样的逻辑与呈现分离是一种很好的做法,这样就可以对其进行单元测试和测量。

使用Javascript的数组对170个项进行排序。prototype.sort()不应花费超过几毫秒的时间,因此可能会出现呈现问题


将这样的逻辑排序与呈现分离是一种很好的做法,这样就可以对其进行单元测试和测量。

如果
value
是一个数字,请使用
返回a[col]。value-b[col].value
虽然我不希望您的方法花费这么长时间。子数组的大小不应该影响排序时间。值是否可以相等?你应该在他们返回时返回
0
。@Barmar谢谢,等于返回0可能有点帮助。显著加快操作的是渲染前20行。底层数据仍然存在(正在排序),但React不必在排序后重新渲染那么多数据。。。不幸的是,这让我认为这是一个react渲染问题,而不是排序本身(叹气)。如果
value
是一个数字,请使用
returna[col].value-b[col].value
虽然我不希望您的方法花费这么长时间。子数组的大小不应该影响排序时间。值是否可以相等?你应该在他们返回时返回
0
。@Barmar谢谢,等于返回0可能有点帮助。显著加快操作的是渲染前20行。底层数据仍然存在(正在排序),但React不必在排序后重新渲染那么多数据。。。不幸的是,这让我认为这是一个react呈现问题,而不是排序本身(叹气)我不相信localeCompare出于任何原因在react Native中工作。我不相信localeCompare出于任何原因在react Native中工作。如果不对整个数组进行排序,如何知道前30个是哪一个?这可以在后端处理,让它发送9个额外的条目数组,按每列的最低值排序。如果不对整个数组排序,如何知道前30个是哪一个?这可以在后端处理,让它发送9个额外的条目数组,按每列的最低值排序。