2014-04-27 93 views
1

在我的應用程序中,我讓用戶選擇他們希望如何排列數據(排序或排序)。
當他們選擇排序時,我簡單地排序一切。這部分對我來說很簡單。但是,當他們選擇排序,然後選擇未排序,我想按照數據庫給我的相同順序向他們展示數據(即,我不想只調用randomize()或其他) 。
有沒有一種有效的方式來「排序」我排序自己而不保留原始數組副本的數組?排序數組的高效方法我對自己排序

+0

什麼是「數據」?它是一個值的數組,一個對象,HTMLCollection,是什麼? – RobG

+0

我認爲如果**未排序**我會使用'Record.ID'或'Record.creationTimestamp'對它們排序 –

回答

6

您可以做的一件事是在每條記錄中保留一個額外的(隱藏的)整數值,以記錄您從數據庫收到記錄的原始順序。當用戶選擇「未排序」時,然後按該原始排序值排序。

+0

請注意,如果您不想添加新字段,請保留整個*副本*數組也不是必需的。您只需要一個「反向排序」索引數組(與數據一起排序的0 .. * n *索引數組)。 – usr2564301

+0

@ Jongware - 你有任何代碼來展示如何維護未排序的索引?我認爲「僅」比你推斷的要多一點。 :-) – RobG

+0

我的建議是使用數據庫索引 –

1

爲什麼不保留原始集合的副本?或者不要修改它,而是在用戶請求排序時生成原始集合的排序副本。這似乎比保持原始價值或類似的東西簡單得多。

+0

1.我不想保存數組的另一個副本,因爲它最終可能會很大。 2.這是什麼,我現在做的(我再次請求所有的數據,當用戶想是他們不排序)相反。 兩者都可以工作,但我正在尋找更好的(如果更復雜的)解決方案。 – chustar

+1

在這種情況下,格雷格的答案可能是要走的路。 –