Angular6 Splice返回已删除的图元,而不是返回所有未删除的其他图元

Angular6 Splice返回已删除的图元,而不是返回所有未删除的其他图元,angular6,Angular6,如果你读了,你会意识到这是一个可变的操作。这意味着当您使用拼接时,您将:1)返回阵列的拼接部分。2) 改变原始数据对象 例如: getAllClients() { this.clientsService.getClients() .subscribe( data => { this.clients= data.splice(22, 1); //this.clients = data; }, error =&

如果你读了,你会意识到这是一个可变的操作。这意味着当您使用拼接时,您将:1)返回阵列的拼接部分。2) 改变原始数据对象

例如:

getAllClients() {
    this.clientsService.getClients()
    .subscribe(
      data => {
        this.clients= data.splice(22, 1);
        //this.clients = data;
      },
      error => {
        // console.log(JSON.stringify(error))
      }
    );
}
所以基本上不用保存这个.clients和data.splice(22,1)。你应该先执行

 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]
然后将结果分配给客户端

data.splice(22, 1);

我仍然建议您使用一种不可变的方式来处理数据,就像这样

是的,
splice
更改数组并返回删除的元素。毫不奇怪,未删除的元素在数组中

如果要从数组中删除第22个元素并将该数组分配给
this.clients
,这是一种正确的方法:

this.clients = data;
如果您希望
this.client
少一个元素,但要使
数据
保持不变,则必须克隆它:

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

这个问题回答了吗?
this.client = data.slice();
this.client.splice(22, 1);