2017-04-18 72 views
0
var availableMarketGroups = {}; 

angular.forEach(function (market) { 

    if (availableMarketGroups[market.group_id]) { // market.group_id is not sorted id 
     availableMarketGroups[market.group_id].count++; 
    } 
}); 

market.group_id - 數,不排序,有時其重複 availableMarketGroups [market.group_id] .Count之間的 - 它的長度如何忽略if語句中的重複值?

允許查看圖像以獲得更多信息。

市場組的數量並不代表實際的市場數量。

availableMarketGroups [market.group_id] .count show - 15,但實際上它應該是5(5組),因爲market.group_id是重複的。

enter image description here

在if語句我怎麼可以忽略重複market.group_id值?

+0

似乎一切都是獨一無二的。更新你的JSON和期望的outptut – Aravind

+0

@Aravind json來自swarm,websocket –

回答

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++; 
    } 
}); 
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

0

硬盤沒有你的數據說。一般來說,你應該能夠reduce下來的獨特的group_id S:

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); 
0

您可以使用下劃線:

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