我有这样一个字典:{a:0, b:1, c:2}
。实际上,字段名称及其在表中的顺序。我需要求助于此结构,以便(例如)如果 b 的位置变为 0,则结果为 {b:0, a:1, c:2}
。如果 b 的位置变为 2 那么结果必须是 {a:0, c:1, b:2}
等等...
如何做到这一点?我不能使用内置函数(如果有的话),因为该字典中的每个字段都来自更复杂的结构。我基本上只能迭代这个字典,排序与否,并更改位置值。
我使用 Javascript/Coffeescript,但这没关系 - 我会很感激任何语言的想法。
最佳答案
考虑需要发生什么:如果将某个值从第 n 阶移动到第 n' 阶,实际上只有第 n 阶和 n' 之间的值的顺序发生变化。如果 n > n',则向下移动一位,如果 n < n',则向上移动一位。这是一些伪代码:
function(dict, name, newOrder)
{
var oldOrder = dict[name];
foreach((k, order) in dict)
{
if(order > oldOrder && order <= newOrder)
dict[k]--;
else if(order >= newOrder && order < oldOrder)
dict[k]++;
}
dict[name] = newOrder;
}
关于javascript - 在由元素 :position pairs 组成的字典中移动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19559353/