LoginSignup
0
0

More than 3 years have passed since last update.

【javascript】配列をループして処理成功した要素は削除する

Posted at

Vueなど配列データと見た目が連動(データバインディング)しているときに、
処理成功した要素だけ削除して、失敗した要素は残しておきたい。ということがありました。

ループ(forEach?Map使う?)と要素の削除(shift?deleteだとundefinedになるだけで要素は残るのか...)に試行錯誤した結果、forとspliceに落ち着いたのでそのメモ。

for (let i = 0; i < this.files.length; i++) {
  const file = this.files[i];
  file.uploading = true; // 処理中だよ(見た目を変える)
  await upload(file).then(() => {
    // 処理成功したら要素を削除
    this.files.splice(i, 1);
    // 要素を削除(splice)したことで添字が詰まるので、i--しないと次の要素がスキップされてしまう
    i--;
  }).catch(error => {
    file.uploading = false; // 処理は終わったけど...(見た目を変える)
    file.error = true; // エラーになったよ(見た目を変える)
  });
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0