I have array of objects like this:
rows = [{"sortOrder": 1, "name": "A"}, {"sortOrder": 2, "name": "B"}, {"sortOrder": 3, "name": "C"}]
When I click up button I call this function passing object {"sortOrder": 2, "name": "B"}
as parameter:
public rowUp(item:any) {
for (let i = 0; i < this.rows.length; i++) {
if(this.rows[i].sortOrder == item.sortOrder) {
this.rows[i].sortOrder = this.rows[i].sortOrder - 1;
break;
}
}
}
In result I need to change sortOrder
of all objects pressing buttons up/down
I tried to do this another way:
public rowUp(item: any) {
let currentIndex = item.sortOrder;
for (let i = 0; i < this.rows.length; i++) {
if (this.rows[i].sortOrder == item.sortOrder) {
this.rows[i].sortOrder = this.rows[i].sortOrder - 1;
this.rows[i - 1].sortOrder = currentIndex;
}
}
}
public rowDown(item: any) {
let currentIndex = item.sortOrder;
for (let i = 0; i < this.rows.length; i++) {
if (this.rows[i].sortOrder == item.sortOrder) {
this.rows[i].sortOrder = this.rows[i].sortOrder + 1;
this.rows[i + 1].sortOrder = currentIndex;
}
}
}