[英]How to move item from array after certain position and shift?
我需要管理一个具有依赖关系的 todolist,它是一个包含对象的数组:我需要带孩子并选择父母并重新排序项目。 只有两个层次结构。
grandfather
father
child
例子:
data = [{id: 1, taskParentId: null}, {id:2, taskParentId: null}, {id:3, taskParentId: 1} {id:4, taskParentId: null}, {id:5, taskParentId: 2}, {id:6, taskParentId: 3}];
我需要这样的订单:
1-3--6
2-5
4
我想用这个 function 订购
const swapArrayLocs = (arr, oldIndex, newIndex) => {
if (newIndex >= arr.length) {
let i = newIndex - arr.length + 1;
while (i--) {
arr.push(undefined);
}
}
arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);
return arr;
};
我使用 taskParentId 获取元素的索引,并给出一个是 taskParent 的下一个索引。
示例...索引为 6 的元素
swapArrayLocs(data, 6, parentIndex+1);
有时它可以工作,但有时顺序不受尊重......我可以使用一些顺序算法来解决它吗?
以下应该在两个索引之间执行干净的交换。 预先放置逻辑并在每次要交换两个值时调用它。
function swapArray(array, ind1, ind2) {
let tempVal = array[ind1]
array[ind1] = array[ind2]
array[ind2] = tempVal
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.