【发布时间】:2021-08-18 15:37:52
【问题描述】:
我有一个包含上一个和下一个任务 ID 的任务对象数组。我需要显示一组任务,这些任务根据上一个和下一个任务 ID 进行排序。例如:
我的输入任务数组是
[
{
"taskId": "101",
"previousTaskId":"0",
"nextTaskId":"102"
},
{
"taskId": "103",
"previousTaskId":"102",
"nextTaskId":"0"
},
{
"taskId": "102",
"previousTaskId":"101",
"nextTaskId":"103"
}
]
我的输出任务数组是:
[
{
"taskId": "101",
"previousTaskId":"0",
"nextTaskId":"102"
},
{
"taskId": "102",
"previousTaskId":"101",
"nextTaskId":"103"
},
{
"taskId": "103",
"previousTaskId":"102",
"nextTaskId":"0"
}
]
有没有办法使用 es6 方法来实现它?我正在尝试使用 reduce 和 map 功能
const sortedTasks = tasks.reduce((acc, task) => {
let {taskId, previousTaskId, nextTaskId} = task;
return {...acc, task.map(function(item){
if(item.previousTaskId === 0) //first position
//how to compare with another taskId and assign it to acc ?
})
};
}, {});
【问题讨论】:
-
什么保零作为 id?你在开始和结束时总是零吗?
-
为什么不用内置排序功能?
-
输入数组来自 ajax 调用,是的,第一个 object.previousTaskId 始终为 0,endObject.nextTaskId 为 0
标签: javascript sorting ecmascript-6 linked-list