オブジェクトの最初の部分のみ削除

7053 ワード

オブジェクトから一部を削除
次のような曲のヒントがある場合
特定の歌手の部分だけを再生してヒントから削除したらどうしますか?
const songRequestQueue = [
  {
    playList: {
      genre: "팝",
      title: "Sugar",
      singer: "마룬파이브",
    },
    customerName: "1번고객",
  },
  {
    playList: {
      genre: "팝",
      title: "Pysical",
      singer: "두아리파",
    },
    customerName: "2번고객",
  },
  {
    playList: {
      genre: "팝",
      title: "노스텔지아",
      singer: "두아리파",
    },
    customerName: "3번고객",
  },
];
以前
特定の歌手の再生(特定のタイプの第1部のみ削除)
歌手と同じインデックスをfor loopでsongrequestQueueで検索します.
キュー内のオブジェクトを削除しbreakから飛び出し、最初のオブジェクトのみを削除します.
    if (singer && !genre && !type) {
      for (let i = 0; i < this.songRequestQueue.length; i++) {
        if (this.songRequestQueue[i].playList.singer === singer) {
          delete this.songRequestQueue[i];
          break;
        }
      }
    }
変更
特定の歌手の再生(特定のタイプの第1部のみ削除)
findIndexを使用して最初のインデックスのみを取得し、spliceを使用して既存のキューから削除します.
上記の相違点は、直接アクセスインデックスによって削除されます.
    if (singer && !genre && !type) {
      this.songRequestQueue.splice(
        this.songRequestQueue.findIndex(
          (req: SongRequest) => req.playList.singer === singer
        ),
        1
      );
    }
findIndex
findIndex()メソッドは、与えられた判別関数を満たす配列の最初の要素のインデックスを返します.満足できる要素がない場合は、-1を返します.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex