如何忽略if语句中的重复值?

时间:2017-04-18 01:43:11

标签: javascript angularjs foreach duplicates

from datetime import time
t = time(00, 00, 00, tzinfo=dt.tzname())
tmstmp = dt.isoformat()+'+'+t.strftime("%M:%S %z")

market.group_id - 数字,未排序,有时是重复数据 availableMarketGroups [market.group_id] .count - 其长度

让我们看一下图片了解更多信息。

市场群体的数量并不代表真实的市场数量。

availableMarketGroups [market.group_id] .count show - 15,但实际上它应该是5(5组),因为market.group_id是重复的。

enter image description here

如何忽略if语句中重复的market.group_id值?

4 个答案:

答案 0 :(得分:0)

var availableMarketGroups = {};
var groupsProcessed = [];

angular.forEach(availableMarketGroups, function(marketGroup) {
    if (groupsProcessed.indexOf(marketGroup.group_id) < 0) {
        groupsProcessed.push(marketGroup.group_id);
        availableMarketGroups[market.group_id].count++;
    }
});

答案 1 :(得分:0)

计算唯一数组元素的答案是使函数如下所示。

var counts = {};
for (var i = 0; i < arr.length; i++) {
    counts[arr[i]] = 1 + (counts[arr[i]] || 0);
}

它将返回数组中元素的唯一计数。

参考:Count unique elements in array without sorting

答案 2 :(得分:0)

没有您的数据很难说。一般来说,您应该能够reduce将其设置为唯一的group_id套:

const uniqueGroups = markets.reduce(function(set, market) {
  if (!set.has(market.group_id)) {
    set.add(market.group_id);
  }
  return set;
}, new Set());

console.log('Unique group count: ', uniqueGroups.size);

答案 3 :(得分:0)

您可以使用下划线:

var newObj = _.uniq(market, function(p){ return p.group_id; });