【问题标题】:How to remove duplicate values in object in forEach如何在forEach中删除对象中的重复值
【发布时间】:2017-09-12 08:17:01
【问题描述】:

我有一个这样的 forEach

angular.forEach(game.market, function (market) {
  if (availableMarketGroups[market.group_id]) {
      availableMarketGroups[market.group_id].count++;
  }
});

我需要检查一下,如果 availableMarketGroups[market.group_id] 号码重复,请忽略它!

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

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

【问题讨论】:

  • 我相信您只需要从数组中删除重复项,然后执行循环。看到这个:stackoverflow.com/questions/9229645/…
  • 这有点令人困惑。您的屏幕截图显示的是什么对象?带有7279906472799067 键的那个?
  • .count++;将无法工作,因为没有计数变量...
  • @ScottMarcus 数据来自 swarm,来自后端,我只能编辑并将其放在我的 html 中 :)
  • @acdcjunior 这个 id 是我的市场 id,同样是 availableMarketGroups -> 市场

标签: javascript angularjs foreach duplicates


【解决方案1】:

您可以使用辅助结构来存储不同的 group_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);
        }
    }
});

【讨论】:

  • 你好,看起来简洁大方,但是count又显示错了,
【解决方案2】:

所以你想要

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 都经过排序和过滤以确保其唯一性,并且您可以轻松检查其长度。

【讨论】:

  • 包含此对象的数据:` 72799064 72799067 ... 此对象在图像中可见
  • 你能创造一些小提琴或笨蛋吗?
  • 它简单难懂,我必须把它放在哪里?在 foreach 之前还是之中?
【解决方案3】:

根据您的 cmets,我只能猜测您想要什么,但 availableMarketGroups[market.group_id] 意味着您具有以下可用MarketGroups 结构:

{ 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。使用 Set 的方法

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

【讨论】:

  • 感谢关注 :) 是的,但我认为,我只需要检查它,如果 availableMarketGroups[market.group_id] 重复与否,不要删除它。
猜你喜欢
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
  • 2021-10-31
  • 2021-08-26
  • 2017-02-23
  • 1970-01-01
相关资源
最近更新 更多