当前位置: 首页 > 面试题库 >

如何通过键对对象数组进行分组

贺季
2023-03-14
问题内容

有谁知道(如果可能的话,也用破折号)通过对象键对对象数组进行分组然后根据分组创建新的对象数组的方法吗?例如,我有一系列汽车对象:

var cars = [
    {
        'make': 'audi',
        'model': 'r8',
        'year': '2012'
    }, {
        'make': 'audi',
        'model': 'rs5',
        'year': '2013'
    }, {
        'make': 'ford',
        'model': 'mustang',
        'year': '2012'
    }, {
        'make': 'ford',
        'model': 'fusion',
        'year': '2015'
    }, {
        'make': 'kia',
        'model': 'optima',
        'year': '2012'
    },
];

我想制作一组新的汽车对象,并按以下类别分组make

var cars = {
    'audi': [
        {
            'model': 'r8',
            'year': '2012'
        }, {
            'model': 'rs5',
            'year': '2013'
        },
    ],

    'ford': [
        {
            'model': 'mustang',
            'year': '2012'
        }, {
            'model': 'fusion',
            'year': '2015'
        }
    ],

    'kia': [
        {
            'model': 'optima',
            'year': '2012'
        }
    ]
}

问题答案:

。简单_.groupBy,并允许在分组结构中的对象中进行一些重复。

但是,OP还要求删除重复的make密钥。如果您想一路走下去:

var grouped = _.mapValues(_.groupBy(cars, 'make'),
                          clist => clist.map(car => _.omit(car, 'make')));

console.log(grouped);

产量:

{ audi:
   [ { model: 'r8', year: '2012' },
     { model: 'rs5', year: '2013' } ],
  ford:
   [ { model: 'mustang', year: '2012' },
     { model: 'fusion', year: '2015' } ],
  kia: [ { model: 'optima', year: '2012' } ] }

如果您想使用Underscore.js进行此操作,请注意,其版本_.mapValues称为_.mapObject



 类似资料:
  • 有人知道一种方法(如果可能的话也可以使用lodash)通过对象键对对象数组进行分组,然后根据分组创建新的对象数组吗?例如,我有一个汽车对象数组: 我想制作一个由分组的新汽车对象数组:

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

  • 问题内容: 可以说我们有一个名为imageFile的自定义类,该类包含两个属性。 其中很多存储在数组中 问题是:如何按“ fileID” ASC或DESC对图像数组进行排序? 问题答案: 首先,将Array声明为类型化数组,以便在迭代时可以调用方法: 然后,您可以简单地执行以下操作: 迅捷2 迅捷3+ 上面的示例给出了 desc 排序顺序

  • 问题内容: 我试图通过多个键对多维数组进行排序,但我不知道从哪里开始。我看了uasort,但不确定如何根据需要编写函数。 我需要按状态排序,然后按event_type排序,然后按日期排序。 我的数组如下所示: 问题答案: 你需要 从PHP 5.5.0开始: 就是现在:

  • 问题内容: 通过多个属性对数组中的元素进行分组最符合我的问题,因为它确实通过数组中的多个键对对象进行了分组。问题是此解决方案无法汇总属性值,然后删除重复项,而是将所有重复项嵌套在二维数组中。 预期行为 我有一个对象数组,必须按和进行分组。 这个数组中的对象被视为重复仅当其和是相同的。如果它们是,我想分别总结它们的和值,然后删除重复项。 因此,在这个例子的结果阵列可以仅含有四种组合:,,, 问题 我

  • 我有app,我有很多不同风格的按钮组件(我特意把它分开,以提高可读性),例如:普通、概述、文本、链接和其他。我想创建一个特殊的组件,在其中我将传递prop,component将返回我需要的按钮组件。现在我制作了这个组件,但我必须传递我可能不需要的道具。我如何解决这个问题,或者你知道分组的不同实现方式? 分组组件: