const linkedProjects = ["2", "3"];
const projects = [
{
id: 1,
name: "Project 1",
lastUpdate: 1575976301091
},
{
id: 2,
name: "Project 2",
lastUpdate: 1575975812091
},
{
id: 3,
name: "Project 3",
lastUpdate: 1575976378391
},
{
id: 4,
name: "Project 4",
lastUpdate: 15753276301091
}
];
Чего я хочу добиться:
Я хочу отсортировать массив projects
, в котором есть несколько объектов.
Сначала он должен упорядочить объекты, которые сначала включены в linkedProjects
по ID.
Во-вторых, он должен упорядочить оставшиеся объекты по lastUpdate
.
Что я сделал до сих пор:
projects.sort((a, b) => {
const [dateA, dateB] = [
a.lastUpdate && a.lastUpdate.getTime(),
b.lastUpdate && b.lastUpdate.getTime()
];
if (linkedProjects && linkedProjects.length > 0) {
if (linkedProjects.includes(a.id)) {
return -1;
} else {
return 1;
}
}
if (dateA === dateB) {
console.log("0a")
return 0;
}
if (!dateA) {
console.log("1b")
return 1;
}
if (!dateB) {
console.log("-1b")
return -1;
}
if (dateA > dateB) {
console.log("-1d")
return -1;
}
if (dateA < dateB) {
console.log("1")
return 1;
}
return 0;
})
Сортировка по lastUpdate работает и была реализовано ранее, но моя новая реализация с linkedProjects
не работает.
Результат должен быть:
[
{
id: 2, // included in linkedProjects
name: "Project 2",
lastUpdate: 1575975812091
},
{
id: 3, // included in linkedProjects
name: "Project 3",
lastUpdate: 1575976378391
},
{
id: 4,
name: "Project 4",
lastUpdate: 15753276301091 // is newer than Project 1
},
{
id: 1,
name: "Project 1",
lastUpdate: 1575976301091 // is older than Project 4
}
]