0

这目前只是概念性的,但它困扰着我的大脑。

如果我有一个项目列表——在我看来这是一个 HTML/JS 实现,但这只是因为我是一个视觉思考者;)

我想使用拖放对这个列表进行排序,目的是在完成后存储新订单。有没有办法做到这一点而不给项目编号,然后更新丢弃项目的数量+它后面的每个项目?这不是非常低效吗?

4

4 回答 4

3

就性能而言,更改元素的编号与实际渲染过渡无关(当您拖动元素时),所以不,它不是低效的。

您可以使用双向链表来最小化更改集合顺序所需的操作量。

于 2012-12-13T09:25:26.640 回答
1

我建议使用 JavaScript 框架来完成这项工作。

KnockoutJS应该满足您的需求(来自网站):

Knockout 是一个 JavaScript 库,可帮助您使用干净的底层数据模型创建丰富的响应式显示和编辑器用户界面。任何时候您的 UI 部分都可以动态更新(例如,根据用户的操作或外部数据源发生更改),KO 可以帮助您更简单和可维护地实现它。

于 2012-12-13T09:26:01.643 回答
0

如果你在数字中留下空白,你可能会有效地做到这一点——例如,让第一个元素为 10,第二个为 20,第三个为 30,等等。然后当你在第二个之前和之后拖动一些东西时第一个,称之为15(或其他)。

与其每次都增加数字,不如只在空间不足时才这样做。最后,您可以按最低编号对对象进行排序。

于 2012-12-13T09:25:11.667 回答
0

这里不包括任何代码,因为这是一个概念性问题。
无论如何,列表中的每个元素都必须有一个数字,因为它们之间必须有一个总排序才能表示为列表。
如果您不希望列表中的元素数量很大,那么冒泡排序应该非常适合您。

于 2012-12-13T09:27:12.313 回答