Если вы хотите выполнить то же самое с вашим array
, все, что вам нужно сделать, это проверить, имеет ли данный element
элемент previous
или next
, чтобы вы могли поменять оба объекта, чтобы избежатьan index out of bound
.
Вот как должен быть ваш код:
function moveUp(id) {
let index = arr.findIndex(e => e.id == id);
if (index > 0) {
let el = arr[index];
arr[index] = arr[index - 1];
arr[index - 1] = el;
}
}
На переместите element
вверх в array
, вам нужно сделатьУбедитесь, что element
не является первым элементом в array
, затем выполните операцию подкачки.
function moveDown(id) {
let index = arr.findIndex(e => e.id == id);
if (index !== -1 && index < arr.length - 1) {
let el = arr[index];
arr[index] = arr[index + 1];
arr[index + 1] = el;
}
}
На переместите element
вниз , вам нужно убедиться, что это element
не последний в array
.
Демо:
ЭтоЭто рабочий демонстрационный образец:
var arr = [
{ id: "Racer-101", rank: "1"},
{ id: "Racer-102", rank: "2"},
{ id: "Racer-103", rank: "3"},
{ id: "Racer-104", rank: "4"},
{ id: "Racer-105", rank: "5"},
{ id: "Racer-106", rank: "6"},
{ id: "Racer-107", rank: "7"},
{ id: "Racer-108", rank: "8"},
{ id: "Racer-109", rank: "9"}
];
function moveUp(id) {
let index = arr.findIndex(e => e.id == id);
if (index > 0) {
let el = arr[index];
arr[index] = arr[index - 1];
arr[index - 1] = el;
}
}
function moveDown(id) {
let index = arr.findIndex(e => e.id == id);
if (index !== -1 && index < arr.length - 1) {
let el = arr[index];
arr[index] = arr[index + 1];
arr[index + 1] = el;
}
}
moveDown("Racer-101");
moveUp("Racer-103");
console.log(arr);