Javascript 如何在forEach中删除对象中的重复值

Javascript 如何在forEach中删除对象中的重复值,javascript,angularjs,foreach,duplicates,Javascript,Angularjs,Foreach,Duplicates,我有一辆这样的车 angular.forEach(game.market, function (market) { if (availableMarketGroups[market.group_id]) { availableMarketGroups[market.group_id].count++; } }); 我需要检查,如果availableMarketGroups[market.group\u id]编号重复,则忽略它 例如,我的id为:a、b、b、c、d-->最终

我有一辆这样的车

angular.forEach(game.market, function (market) {
  if (availableMarketGroups[market.group_id]) {
      availableMarketGroups[market.group_id].count++;
  }
});
我需要检查,如果availableMarketGroups[market.group\u id]编号重复,则忽略它

例如,我的id为:a、b、b、c、d-->最终计数为6


我还需要检查,如果重复,则忽略它并获得最终计数4

您可以使用辅助结构来存储不同的组id

var summedGroupId = [];
angular.forEach(game.market, function (market) {
    if (availableMarketGroups[market.group_id]) {
        if (summedGroupId.indexOf(market.group_id) < 0) {
            availableMarketGroups[market.group_id].count++;
            summedGroupId.push(market.group_id);
        }
    }
});
var summedGroupId=[];
角度。forEach(游戏。市场,功能(市场){
if(可用的MarketGroup[market.group\u id]){
if(summedGroupId.indexOf(market.group\u id)<0){
AvailableMarketGroup[market.group_id].count++;
summedGroupId.push(market.group\u id);
}
}
});
所以你想要

ids=[];
for(key in game.market){
  if(game.market.hasOwnProperty(key)){
       ids.push(game.market[key].group_id);
   }
 }
ids=ids.sort();
uniqueids=ids.filter((el,id)=>(!id||el!=ids[id-1]));
console.log(uniqueids.length);

一个新数组中的所有id,经过排序和筛选后都是唯一的,因此您可以轻松检查其长度。

根据您的评论,我可以猜测您想要什么,但availableMarketGroups[market.group\u id]表示AvailableMarketGroup具有以下结构:

{ someGroupId: someValue, someGroupId2: someValue2, ...}
而且,看起来您希望这些值是唯一的,并针对当前的游戏市场进行过滤。 (命名为“game.market”并不恰当地表明它实际上是市场)


1。使用reduce的方法

const reducedMarketGroups = availableMarketGroups.reduce((prev, curr) => {
  if (
    game.markets.find(market => market.group_id === curr) && 
    !prev.includes(curr)
  ) prev.push(curr);
  return prev;
}, []);

2。使用集合进近

const reducedMarketGroups = [...new Set(
  availableMarketGroups.filter(marketGroup => 
        game.markets.find(market => market.group_id === marketGroup)
  )
)];

我相信您只需要从阵列中删除重复项,然后执行循环。看这个:这有点混乱。你的截图显示的是什么?带有键
72799064
72799067
的那一个。count++;不会工作,因为没有计数变量。@ScottMarcus数据来自swarm,来自后端,我只能编辑并将其放在我的html:)@acdcjunior此id是我的市场id,相同的是AvailableMarketGroup->markethi,它看起来简单而优雅,但计数再次显示错误的数字,它的数据与此对象:`72799064 72799067。。。这个在图像中可见的物体你能创造一些小提琴或弹琴吗?很简单,很难理解,我必须把它放在哪里?在foreach之前还是在foreach中?谢谢关注:)是的,但有人认为,我只需要检查它,如果可用MarketGroup[market.group_id]是否重复,就不要删除它。