当使用ng-options过滤对象时,Angular.js计算项目迭代次数

时间:2015-12-22 10:52:53

标签: angularjs count duplicates filtering ng-options

使用Angular处理列表过滤,其中列出基于区域的项目并创建选项选择列出这些我必须删除重复的区域,并且需要在区域名称旁边的计数编号,这表示有多少来自同一地区的物品。

我找到了这个帖子:How to count unique results based on a particular properties within ng-options但是在删除重复时它不起作用。

Heres是我的选择

<select ng-options="item.region as item.region for item in items | unique: 'region'" ng-model="catFilter">

这是我的app.js

var regionSort = angular.module('regionSort', [
    'regionSort.controllers'
]);

regionSort.filter('unique', function() {

    return function(items, filterOn) {

        if (filterOn === false) {
            return items;
        }

        if ((filterOn || angular.isUndefined(filterOn)) && angular.isArray(items)) {
            var hashCheck = {},
                newItems = [];

            var extractValueToCompare = function(item) {
                if (angular.isObject(item) && angular.isString(filterOn)) {
                    return item[filterOn];
                } else {
                    return item;
                }
            };

            angular.forEach(items, function(item) {
                var valueToCheck, isDuplicate = false;
                var count = 0;

                for (var i = 0; i < newItems.length; i++) {
                    if (angular.equals(extractValueToCompare(newItems[i]), extractValueToCompare(item))) {
                        isDuplicate = true;
                        break;
                    }
                }
                if (!isDuplicate) {
                    newItems.push(item);
                }

            });
            items = newItems;
        }
        return items;
    };
});

有人知道我该如何解决这个问题?在此先感谢!!

项目结构非常简单,如:

[
    {
        "name": "Name",
        "desc": "Description",
        "price": 700,
        "priceold": 1080,
        "persons": 10,
        "discount": 35,
        "vote": "9,3",
        "image": "https://someige.jpg",
        "url": "http://someurl.com",
        "region": "XXX"
    }, ...
]

0 个答案:

没有答案