【问题标题】:Conditional filtering array with map JavaScript带有地图 JavaScript 的条件过滤数组
【发布时间】:2020-10-13 22:27:21
【问题描述】:

我正在尝试获取具有与genreFilter 相同的流派音乐ID 的新曲目数组。

因此,如果genreFilter 为12,我需要新数组包含流派音乐ID = 12 的曲目。但流派列表是其他数组,所以我认为我也需要对其进行迭代,然后返回曲目。

我正在做下一个

const list = tracks
      .map((track) =>
        track.primary_genres.music_genre_list.filter((genre) => {
          if (
            genre.music_genre &&
            genre.music_genre.music_genre_id === genreFilter
          ) {
            return track;
          }
        })
      );

但这只会返回通过过滤函数获得的流派,不会返回曲目。

【问题讨论】:

    标签: javascript filter


    【解决方案1】:

    由于您想要的输出是轨道数组,因此您应该在 tracks 数组上使用 .filter。在过滤器内部,检查music_genre_ids 中的.some 是否等于genreFilter

    const list = tracks.filter(
      track => track.primary_genres.music_genre_list.some(
        genre => genre.music_genre?.music_genre_id === genreFilter
      )
    );
    

    使用可选链接使事情简洁。如果您不能使用可选链接,那么它必须与您最初所做的类似:

    genere => (
      genre.music_genre &&
      genre.music_genre.music_genre_id === genreFilter
    )
    

    【讨论】:

    • 太棒了。非常感谢。我不知道我可以要求符合标志的财产?
    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2015-10-28
    相关资源
    最近更新 更多