如何忽略if语句中的重复值?
问题描述:
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是重复的。
在if语句我怎么可以忽略重复market.group_id值?
答
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++;
}
});
答
对唯一数组元素进行计数的答案是使一个函数如下所示。
var counts = {};
for (var i = 0; i < arr.length; i++) {
counts[arr[i]] = 1 + (counts[arr[i]] || 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);
答
您可以使用下划线:
var newObj = _.uniq(market, function(p){ return p.group_id; });
似乎一切都是独一无二的。更新你的JSON和期望的outptut – Aravind
@Aravind json来自swarm,websocket –