拖拽排序实现方案
- 增加字段的方法
增加排序字段sort sort=1 ,数据量少的情况下采用 数组形式统一传入后端,后端根据前端传入的数组序列进行循环重排
- 取中值法
大体上可以理解未sort 升级版本,给默认第一位赋值 pos 较大参数1000 第二位就是2000
链表形式结构的方案:
例如:
a | 1000 |
---|---|
b | 2000 |
c | 3000 |
d | 4000 |
如果有 新数据 f 想插入a 之前 则 取 (1000+0) /2 =500 位置 即排序 500 1000 2000 3000 4000 类比最后想插入d之后的位置
如果c想插入 b位置 则 取b位置 2000 和b 前一位 c=(2000+1000)/2=1500 排序 b 对应位置不变
3 .单表单列模式法
元素有下标
case1:增加 新元素 abcdef (123456) 增加新元素就是数据总量:count(array)+1=7
case2:删除元素d =>4 将大于4的全减一 变成 123 (5-1)(6-1)(7-1)
case3:修改元素顺序(最常见的拖拽情况)当 e(5)想移动到c(3)之前时候,
if(e<c) 后面数据往前移动 将两个(5到3)范围内全减一 即 123(3+1)(4+1)
前面的数据往后移动 (3到5)12(4-1)(5-1)56
根据真实情况来看目前1 适用于数据分类较少的一些组织,b分类采用链表结构查询速度可能受到一部分影响
第三种方案 :采用偏移量方案:offset 大的往小的方向移动 为正数 小的往大的方向移动 为负数 offset代表偏移量大小 偏移量为2 指的是向前移动两位 则 被挤掉的位置需要 依次加一(xy之间)
偏移量为-2 指的是向后两位 则(xy)被挤掉的位置 xy之间依次减一