首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一定的位置和移位后移动数组中的项?

如何在一定的位置和移位后移动数组中的项?
EN

Stack Overflow用户
提问于 2021-02-09 23:53:36
回答 1查看 23关注 0票数 0

我需要管理一个带有依赖项的todolist,它是一个包含对象的数组:我需要获取子元素并选择父元素,然后重新排序项目。只有两个层次结构。

代码语言:javascript
复制
grandfather
 father
  child

示例:

代码语言:javascript
复制
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}];

我需要这样的订单:

代码语言:javascript
复制
1-3--6
2-5
4

我正在尝试使用此函数进行排序

代码语言:javascript
复制
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

代码语言:javascript
复制
swapArrayLocs(data, 6, parentIndex+1);

有时这是工作,但有时顺序不是,respected...There是一些排序算法,我可以使用它来修复它?

EN

回答 1

Stack Overflow用户

发布于 2021-02-10 00:14:56

下面应该在两个指数之间执行一次干净的掉期。把你的逻辑放在前面,每次你想要交换两个值时调用它。

代码语言:javascript
复制
function swapArray(array, ind1, ind2) {
  let tempVal = array[ind1]
  array[ind1] = array[ind2]
  array[ind2] = tempVal
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66122447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档