我有一个在网格中包含数据的网络应用程序。用户可以对列重新排序,服务器可以更改存在的列。我想将用户的列顺序保存在 cookie 中并在页面加载时恢复它。
更正式地说,我有两个唯一 ID(字符串)数组,称为user_columns
和server_columns
。我想重新订购server_columns
,以便我尊重来自 的所有订购信息user_columns
,并尽可能多地来自server_columns
。我该怎么做呢?“尽可能”的合理正式定义是什么?
到目前为止我的分析:
问题的一个方面是微不足道的:如果服务器删除了一些列,则从user_columns
. 有关不再存在的列排序的任何信息都没有实际意义。那么问题就变成了合并两个可能相互冲突的订购信息集之一。
这对应于投票理论中的一系列问题:给定一组选票,每张选票都包含候选人之间的部分顺序,产生候选人的完整顺序,这在某种意义上反映了选票。
这使我认为,通过将Schulze Method或Ranked Pairs应用于基于user_columns
和的一组充分操纵的选票,我可能会得到一个可行的解决方案server_columns
。出于用户体验的原因,通过在最后(右侧)插入新列来打破联系对我来说似乎是个好主意。
这听起来像是在正确的轨道上吗?
还要注意,我们可以考虑三种比较:A 和 B 都在 中user_columns
,其中之一是,或者都不是。前一种和后一种很容易解决(分别参考user_columns
和server_columns
);中间的那个,以及它与后者的交互,是棘手的部分。