【问题标题】:Removing Duplicate in Array Of Objects删除对象数组中的重复项
【发布时间】:2017-09-01 17:20:35
【问题描述】:

$scope.filteredShows 中的数据如下所示:

[{"id":19,"show_name":"The Walking Dead","show_type":"Series","show_date":"Sun, Feb 26 2017","orig_date":"2017-02-26","season":"7","ep_val":"11","episode":"Season 7, Episode 11","watched":false},

{"id":20,"show_name":"The Walking Dead","show_type":"Series","show_date":"Sun, Mar 5 2017","orig_date":"2017-03-05","season":"7","ep_val":"12","episode":"Season 7, Episode 12","watched":false},

{"id":21,"show_name":"The Walking Dead","show_type":"Series","show_date":"Sun, Mar 12 2017","orig_date":"2017-03-12","season":"7","ep_val":"13","episode":"Season 7, Episode 13","watched":false},

{"id":22,"show_name":"The Walking Dead","show_type":"Series","show_date":"Sun, Mar 19 2017","orig_date":"2017-03-19","season":"7","ep_val":"14","episode":"Season 7, Episode 14","watched":false}]

我正在使用这些数据使用ng-options 填充select 类:

ng-options='show.show_name for show in filteredShows track by show.id'

但是列出了不止一个“行尸走肉”剧集,因此它在下拉列表中列出了 4 次“行尸走肉”。如何删除此数组中的重复项?

【问题讨论】:

标签: javascript angularjs arrays object duplicates


【解决方案1】:

为什么不简单地在范围内构造一个仅包含相关数据点的新数组...您可以这样做:

const tmp = {} //Tmp var to store show_name's
$scope.showsOnly = $scope.filteredShows.filter(s => 
    tmp[s.show_name]?0:(tmp[s.show_name] = 1)
)

此过滤器全部按名称显示(并且只允许 show_name 的一个实例)。

【讨论】:

    【解决方案2】:

    你可以试试这个:

    ng-options='show.show_name for show in filteredShows track by show.show_name'
    

    或者你可以试试 underscore.js 的 _.uniq() 方法

    【讨论】:

      【解决方案3】:

      如果你使用 lodash,你可以使用 _.uniqBy() 来做到这一点:

      _.uniqBy(data ,"show_name") 
      

      更多信息:https://lodash.com/docs/4.17.4#uniqBy

      【讨论】:

        【解决方案4】:

        我想你可以试试 ng-repeat 中的groupBy 过滤器。

        ng-options="show.show_name for show in filteredShows track by show.id | groupBy: 'show_name'"
        

        【讨论】:

          猜你喜欢
          • 2012-11-24
          • 1970-01-01
          • 2017-04-10
          • 2016-03-12
          • 2016-07-02
          相关资源
          最近更新 更多