【发布时间】:2020-01-01 23:43:24
【问题描述】:
我有一个元素数组。删除了一些元素。然后以某种方式更改数组,这可以是删除或添加元素,在数组中移动元素或这些的组合。
现在我想将移除的元素放回原处,使其尽可能靠近其原始邻居。想象这些元素是文本中的句子,用户可以选择撤消删除他们之前删除的句子。 (这不是实际用例,而是等价的)
我的想法是在删除元素时保存元素 ID 列表(每个元素都有一个 uuid),然后以某种方式使用它来将元素恢复到其原始位置 尊重数组。仅查看前一个元素是行不通的,因为如果在此期间删除或移动前一个元素,它会搞砸。
查看被移除元素周围元素的平均移动似乎也不是一个好主意,因为这会导致它处于它们之间的某个随机位置,而不是处于特别重要的位置。
编辑:显然这对我所说的“最佳”的意思不够清楚,这里有一些例子来说明我的意思:
//start
[1, 2, 3, 4, 5, 6]
//removal of 4
[1, 2, 3, 5, 6]
//array changed in some way...
[1, 2, 6, 5, 7, 8]
//should yield:
[1, 2, 4, 6, 5, 7, 8]
//more examples: (changed array, array with element added back)
[1, 2, 3, 5, 6], [1, 2, 3, 4, 5, 6]
[1, 2, 5, 6], [1, 2, 4, 5, 6]
[5, 6], [4, 5, 6]
[6, 5], [4, 6, 5]
[6, 5, 3, 2, 1], [6, 5, 4, 3, 2, 1]
[5, 6, 1, 2, 3], [5, 6, 1, 2, 3, 4]
【问题讨论】:
-
如果您需要这方面的帮助,您应该提供您的代码
-
作为过程中可能状态的示例?我不是在寻找实现,只是算法的设计......
-
在你定义你的目标之前,你不可能有一个算法。您的帖子未能在您的范例中指定“最佳”。因此,这让我觉得这是 NLP 和语义方面的讨论,而不是算法请求。
-
我添加了说明性示例并澄清了文本。希望这就足够了吗?
标签: javascript arrays algorithm merge