0

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;
      }
    }
  }
Jessie
  • 373
  • 2
  • 6
  • 17

0 Answers0