Javascript 阵列内部的角度js滤波器阵列

Javascript 阵列内部的角度js滤波器阵列,javascript,angularjs,angularjs-filter,Javascript,Angularjs,Angularjs Filter,我有一个困难的时间做一个角度滤波器来解决以下问题 过滤逻辑如下: 1) 如果该项的所有listItem都具有qtyLeft!=0,不显示该项目 2) 如果该项的任何listItem的qtyLeft==0,则显示该项标题以及qtyLeft==0的Coresponding listItem 下面是我的数据结构的一个基本示例,一个项目数组: $scope.jsonList = [ { _id: '0001', title: 'titleA', l

我有一个困难的时间做一个角度滤波器来解决以下问题

过滤逻辑如下:
1) 如果该项的所有listItem都具有qtyLeft!=0,不显示该项目
2) 如果该项的任何listItem的qtyLeft==0,则显示该项标题以及qtyLeft==0的Coresponding listItem

下面是我的数据结构的一个基本示例,一个项目数组:

$scope.jsonList = [
    {
        _id: '0001',
        title: 'titleA',
        list: {
            listName: 'listNameA',
            listItem: [
                {
                   name: 'name1',
                   qtyLeft: 0
                },
                {
                   name: 'name2',
                   qtyLeft: 0
                },
            ]
        }
    },
    {
        _id: '0002',
        title: 'titleB',
        list: {
            listName: 'listNameB',
            listItem: [
                {
                   name: 'name3',
                   qtyLeft: 2
                },
                {
                   name: 'name4',
                   qtyLeft: 0
                },
            ]
        }
    },
    {
        _id: '0003',
        title: 'titleC',
        list: {
            listName: 'listNameC',
            listItem: [
                {
                   name: 'name5',
                   qtyLeft: 2
                },
                {
                   name: 'name6',
                   qtyLeft: 2
                },
            ]
        }
    },
]
以下是最终预期结果:

<div ng-repeat="item in jsonList | filter: filterLogic">
    <div> </div>
</div>

// final outcome
<div>
    <div>Title: titleA, ListItem: Name1, Name2</div>
    <div>Title: titleB, ListItem: Name4</div>
</div>

//最终结果
标题:titleA,列表项:名称1,名称2
标题:标题栏,列表项:名称4

在此处创建了工作区

如果要使用此指令,请不要忘记在项目中包含underline.js lib

<div ng-repeat="jsonItem in jsonList | showZeroElement track by $index">
   <div>Title:{{ jsonItem.title}}, ListItem:<span ng-repeat="item in    
        jsonItem.list.listItem track by $index" ng-if="item.qtyLeft==0"> 
     {{item.name}}</span>
  </div>
</div>

请展示您尝试过的不起作用的内容。这不是一个代码编写服务。你需要展示你所做的尝试
app.filter('showZeroElement', function() {
return function(input) {
var items = []
angular.forEach(input, function(value, index) {
  angular.forEach(value.list.listItem, function(val, i) {
    var found = _.findWhere(items, {
      'title': value.title
    })
    if (val.qtyLeft === 0 && found === undefined) {
      items.push(value)
    }
  })
})
return items
}
})