javascript - 根据用户输入更新数组排序顺序
问题描述
我需要编写一个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 中处理这个问题的最佳方法是什么
解决方案
你可以试试这个
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;
})
}
推荐阅读
- json - 通过python合并来自不同API的多个JSON响应
- javascript - JQuery - 更改和按键事件给出不同的结果
- asp.net-mvc - 如何在 AspNetUsersRoles 中添加额外的列?
- c# - 将 ASP.NET Core 诊断响应时间提取到语义日志记录数据库中
- sql-server - 从另一个数据库更新所有表模式
- bash - 从具有特定关键字的白线分隔的文件中删除一组行
- java - 使用 WebFlux 对特定映射的并行 GET 请求
- oracle - Oracle APEX for BI Publisher 报告中的键值对 XML 生成
- javascript - 在 if 语句中声明或不声明函数的原因
- sql - BigQuery,用之前的非空值填充缺失值