当前位置: 首页 > 知识库问答 >
问题:

javascript中对象的分组数组[重复]

洪飞驰
2023-03-14

如何在两个属性之后对对象数组进行分组?在以下情况下是否可以使用减少?

例如:按国家和城市将以下数组分组,并对“年龄”属性求和:

array = [
{
  age: 20,
  country: "England"
  city: "London",
  zip: "1234"
},
{
  age: 25,
  country: "England"
  city: "London",
  zip: "12345"
},
{
  age: 40,
  country: "England"
  city: "Manchester",
  zip: "123456"
}
]

/*预期结果:*/

expectedArray = [
{
  age: 45, /* 20 + 25 */
  country: "England"
  city: "London",
  zip: "Not relevant"
},
{
  age: 40,
  country: "England"
  city: "Manchester",
  zip: "NR"
]

共有1个答案

胡夕
2023-03-14

您可以使用findIndex来实现这一点。使用此数组方法,从城市所在的累加器数组中查找对象的索引

let array = [{
    age: 20,
    country: "England",
    city: "London",
    zip: "1234"
  },
  {
    age: 25,
    country: "England",
    city: "London",
    zip: "12345"
  },
  {
    age: 40,
    country: "England",
    city: "Manchester",
    zip: "123456"
  }
]

let newArray = array.reduce((acc, curr) => {
  let getIndex = acc.findIndex((item) => {
    return item.country === curr.country && item.city === curr.city
  });


  if (getIndex === -1) {
    acc.push(curr)
  } else {
    acc[getIndex].age += curr.age

  }

  return acc;
}, []);

console.log(newArray)
 类似资料:
  • 本文向大家介绍JavaScript中的Array 对象(数组对象),包括了JavaScript中的Array 对象(数组对象)的使用技巧和注意事项,需要的朋友参考一下  1、创建Array对象方法: --->var arr = [1,2,3];//简单的定义方法 此时可以知道 此时可以知道: 2、Array对象属性 Array常见的属性有三个:constructor、length和prototyp

  • 可能的重复: 我有一个嵌套的数据结构/JSON,我如何访问一个特定的值? 我有一个在JSON数组中返回嵌套对象的服务。我如何在对象中循环并打印所需的数据? 这是我的结果: 这是我要为每个项目(项目1,项目2,项目3,...)打印的内容: 到目前为止我试过: 这只返回“item1”、“item2”等,但我不知道如何访问sourceUuid等

  • 所以这个问题以前被问过,但我的情况有点不同,因为我已经尝试了这个网站中建议的所有解决方案,我有一个多提及数组: 我还有另一个小数组: 我只想找到与这个“dup”在同一行的“original”。到目前为止,我尝试了查找、过滤和grep,但这些都没有解决我的问题。 我尝试过的代码:

  • 问题内容: 我的数组是这样的: 我想将其转换为: 因此,基本上,分组依据。 我尝试着: 我只是不知道如何处理相似组值的分组。 问题答案: 首先,在JavaScript中,使用遍历数组通常不是一个好主意。 因此,您可以尝试执行以下操作: 在这里使用中间对象有助于加快处理速度,因为它可以避免嵌套循环搜索数组。另外,因为使用迭代遍历对象(而不是数组)是合适的。 附录 FWIW,如果要避免在结果数组中出现

  • 我想创建一个数组,使其包含一些标识名,并且对于这些名称中的每一个,都有另一个关联的数组。我的做法是,, 执行此操作后,我得到如下结果:, 下次调用此函数时,我需要检查1-1是否存在,如果存在,我需要获取与1-1相关的列表。我该怎么做。。?如果1-1不在myArray中,我将调用其他函数。