如何从数组中对所有匹配的对象进行分组,匹配将在多个键上

希瓦巴利扬
var arrayData=[
    {
         amount:10,gameId:7 ,consoleId:3 id: 1
    },
    {
         amount:5, gameId:18 ,consoleId:3 id: 2
    },
    {
         amount:5, gameId:18 ,consoleId:3 id: 3
    },
    {
        amount:10, gameId:7 ,consoleId:3 id: 4
    },
    {
        amount:10, gameId:7 ,consoleId:4 id: 5
    },
    {
        amount:15, gameId:7 ,consoleId:3 id: 6
    }
]

匹配将在数量、游戏 ID、控制台 ID 上进行,并通过对相同记录进行分组来返回它们的 ID。像这样输出

[[2,3],[1,4]]

lodash 或没有 lodash

wenzi

使用 amount 和 gameId 和 consoleId 是关键,然后按关键组合在一起。

喜欢:

const key = `${item.amount}-${item.gameId}-${item.consoleId}`;

完整答案:

var getIdGroup = (arr) => {
  const mp = new Map();
  arr.forEach(item => {
    const key = `${item.amount}-${item.gameId}-${item.consoleId}`;
    const value = mp.get(key);

    if (value) {
      mp.set(key, value.concat(item.id));
    } else {
      mp.set(key, [item.id]);
    }
  });

  // only filter length >= 2
  return [...mp.values()].filter(item => item.length>=2);
}

var arrayData = [{
    amount: 10,
    gameId: 7,
    consoleId: 3,
    id: 1,
  },
  {
    amount: 5,
    gameId: 18,
    consoleId: 3,
    id: 2,
  },
  {
    amount: 5,
    gameId: 18,
    consoleId: 3,
    id: 3,
  },
  {
    amount: 10,
    gameId: 7,
    consoleId: 3,
    id: 4,
  },
  {
    amount: 10,
    gameId: 7,
    consoleId: 4,
    id: 5,
  },
  {
    amount: 15,
    gameId: 7,
    consoleId: 3,
    id: 6,
  },
];
var getIdGroup = (arr) => {
  const mp = new Map();
  arr.forEach((item) => {
    const key = `${item.amount}-${item.gameId}-${item.consoleId}`;
    const value = mp.get(key);

    if (value) {
      mp.set(key, value.concat(item.id));
    } else {
      mp.set(key, [item.id]);
    }
  });

  // only filter length >= 2
  return [...mp.values()].filter((item) => item.length >= 2);
};
console.log(getIdGroup(arrayData));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

返回对象数组的所有匹配元素?

如何从具有匹配属性的数组中删除对象?

如何在对象数组中搜索包含字符串的所有匹配项?

如果值匹配多个键,则从字典中删除所有键

在对象数组中查找所有匹配的元素

匹配对象数组中的对象键并返回键,具有最大音量值的值

如何从多个数组的匹配中创建对象

如何基于Javascript中的多个键对对象数组进行分组?

如何在mongoDB中获取所有匹配的子数组对象

使用JavaScript从与字符串键匹配的数组中获取所有对象

如何通过PHP中的多个键对数组进行分组

查找匹配字典中多个值的所有键

如何匹配谷歌表中数组的所有元素

更新数组和内部数组中匹配的所有对象

用对象中的匹配键替换数组

如何在具有多个值匹配的列表中对元组进行分组

Postgres过滤与包含数组的所有值的分组外键匹配的行

如何对数据帧行进行分组并针对字符串列表中的所有匹配项进行过滤?

如何从具有嵌套对象数组的多个文档中一次获取与mongodoDb查询匹配的所有值

Lodash - 如何从集合中获取匹配字符串条件数组的所有对象

Rails 4 中具有匹配数组值的哈希中的所有键

在弹性搜索中,如何通过对象数组中的多个对象进行匹配?

如何通过匹配内部数组中的值来对数组列表中的数组进行分组?

javascript总结数组中匹配相同键的所有项目

如何通过所有键搜索多维数组中的值并获取匹配数据php的键值?

匹配对象数组中多个字段匹配的文档

如何修改与 json 数组中的条件匹配的所有值?

如何匹配 Elasticsearch 中对象数组中的所有对象?

Mongodb:如何对 $lookup 的结果进行分组并将它们映射到包含匹配键的列表对象?