0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2021-04-08

この記事は移行しました!最新の内容はこちらをご覧ください😀

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?