В vue после присвоения переменной он все еще указывает на старую переменную - PullRequest
1 голос
/ 18 июня 2020
created(){
  this.approvalStepList = this.selectedVoucher.approvalStepList;  // not sorted

  this.approvalStepList
    .sort(function(a,b){
      if (new Date(a.createDate) < new Date(b.createDate)) return -1;
      if (new Date(a.createDate) > new Date(b.createDate)) return 1;
      return 0;
  });

  this.approvalStepList; // now sorted

  this.selectedVoucher.approvalStepList.sort(function(a,b){
    return  new Date(a.createDate) - new Date(b.createDate)
  })[0].step==2;

  this.approvalStepList  // now again not sorted anymore, although its not touched in the command before

1 Ответ

1 голос
/ 18 июня 2020

Это происходит потому, что вы назначаете в начале указатель на this.selectedVoucher.approvalStepList - в этой строке:

this.approvalStepList = this.selectedVoucher.approvalStepList;  // not sorted

Вместо этого вы должны попытаться назначить копию этого массива, например, используя распространение operator:

this.approvalStepList = [...this.selectedVoucher.approvalStepList];

Итак, что там происходило - поскольку вы выполняли не клонирование, а присваивание переменной, эти два значения были связаны вместе, поскольку они указывали на один и тот же объект в памяти - так что все, что вы повлияет ли по одному на каждого из них и на них обоих. Когда вы выполняете копию, она должна работать, я могу предоставить вам простой пример:

l

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