首页 > 解决方案 > 根据用户输入更新数组排序顺序

问题描述

我需要编写一个javascript函数,允许用户输入他们想要对象去的排序顺序,然后修复当时具有该排序顺序的位置

var object = [{
  sortOrder: 4,
  id: "braves"
},{
  sortOrder: 2,
  id: "cubs"
},{
  sortOrder: 3,
  id: "marlins"
},{
  sortOrder: 1,
  id: "mets"
}]

用户请求将 id: "braves" 移动到 sortOrder: 1。

所以它会将“勇敢者”放在 sortOrder 1 中,然后将 1 添加到大都会、幼崽、马林鱼,顺序将是:勇敢者、大都会、幼崽、马林鱼现在。

我查看了 sort() 函数,但它似乎只是对它进行排序。如果mets 和brakes 现在的sortOrder 都是1,那么它怎么知道哪个应该是第一个和第二个?

在 jquery/javascript 中处理这个问题的最佳方法是什么

标签: javascriptarrayssorting

解决方案


你可以试试这个

function moveOrder(id,position){
    object.find(item=>item.id===id).sortOrder=position;
    object.forEach(item=>{
        if(item.id!==id && item.sortOrder>=position)
            item.sortOrder=item.sortOrder+1;
    })
}

推荐阅读