繁体   English   中英

在某些 position 和移位之后如何从数组中移动项目?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM