Typescript: Массив, не хранящий объекты - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь назначить объект строки массиву из события щелчка флажка. Для этого я создал глобальный массив, как показано ниже.

SelectedGrid: any[] = [];

В момент нажатия кажется, что он входит в массив, но когда я установил второй флажок, 1-й элемент пропал из массива. Могу ли я узнать, почему это происходит?

Ниже приведена функция, которую я вызываю в событии click флажка.

public clickConditionRow(row, col, rowSelected) {

            if (rowSelected.isChecked) {
                    this.SelectedGrid.push(rowSelected);             


                console.dir(this.SelectedGrid);
                console.log(this.SelectedGrid.length);

            } else {
                console.log("Unselected ");
                var toDel = this.SelectedGrid.indexOf(rowSelected);
                this.SelectedGrid.splice(toDel);
                console.dir(this.SelectedGrid);
            }

            if (!this.rootScope.$$phase) {
                this.rootScope.$apply();
            }

// for print the values
            for (var y = 0; y < this.SelectedGrid.length; y++) {
                console.log("Element " + y + " = " + this.SelectedGrid[y]);
                console.dir(this.SelectedGrid[y]);
            }

        }

1 Ответ

0 голосов
/ 01 ноября 2019

Я не могу воспроизвести вашу ошибку (может быть, вы переопределяете массив где-то еще?), Но я вижу 2 потенциальных проблемы и хочу указать на них:

  1. Использование indexOf с и объект не можетработать и возвращать -1 (см. код ниже)
  2. splice(toDel) должно быть splice(toDel, 1), или оно удалит все элементы, начиная с индекса toDel до конца массива.

const a = { id: 1 }
const b = { id: 2 }
const list = [ a, b ]

// This returns 1
console.log(list.indexOf(b))

// This returns -1
console.log(list.indexOf({ id: 2 }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...