Splice возвращает удаленный элемент, а не все остальные элементы, которые не были удалены - PullRequest
0 голосов
/ 11 сентября 2018
getAllClients() {
    this.clientsService.getClients()
    .subscribe(
      data => {
        this.clients= data.splice(22, 1);
        //this.clients = data;
      },
      error => {
        // console.log(JSON.stringify(error))
      }
    );
}

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Да, splice изменяет массив и возвращает удаленные элементы. Неудаленные элементы, что неудивительно, находятся в массиве.

Если вы хотите удалить 22-й элемент из массива и присвоить массиву this.clients, это правильный способ сделать это:

data.splice(22, 1);
this.client = data;

Если вы хотите, чтобы this.client имел на один элемент меньше, но для data нетронутым, вам придется его клонировать:

this.client = data.slice();
this.client.splice(22, 1);
0 голосов
/ 11 сентября 2018

Если вы прочитаете документацию для сращивания , вы поймете, что это изменяемая операция. Это означает, что когда вы используете сплайс, вы: 1) возвращаете сплайсированную часть массива. 2) Мутирование исходного объекта данных.

Пример:

 let a = [1, 2, 3, 4];
 const b = a.splice(2, 1); // b is now [3]
 console.log(a); // the rest of the array [1, 2, 4]

Таким образом, вместо сохранения this.clients с data.splice (22, 1). Вы должны выполнить сначала

data.splice(22, 1);

и затем присвоить результат клиентам

this.clients = data;

Я все еще рекомендую вам использовать неизменный способ манипулирования данными, подобный этому Функция Рамды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...