我需要管理一个带有依赖项的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我正在尝试使用此函数进行排序
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的Example...element
swapArrayLocs(data, 6, parentIndex+1);有时这是工作,但有时顺序不是,respected...There是一些排序算法,我可以使用它来修复它?
发布于 2021-02-10 00:14:56
下面应该在两个指数之间执行一次干净的掉期。把你的逻辑放在前面,每次你想要交换两个值时调用它。
function swapArray(array, ind1, ind2) {
let tempVal = array[ind1]
array[ind1] = array[ind2]
array[ind2] = tempVal
}https://stackoverflow.com/questions/66122447
复制相似问题