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

对象的组数组,嵌套具有特定名称的某些键

嵇永望
2023-03-14
问题内容

我有此对象数组,需要对其进行修改以使其更容易呈现。

const items = [
  {
    tab: 'Results',
    section: '2017',
    title: 'Full year Results',
    description: 'Something here',
  },
    {
    tab: 'Results',
    section: '2017',
    title: 'Half year Results',
    description: 'Something here',
  },
    {
    tab: 'Reports',
    section: 'Marketing',
    title: 'First Report',
    description: 'Something here',
  },
  ...
];

我正在尝试对其进行修改,并按特定的键将它们分组。这个想法是要有这个输出。如您所见,键的名称可能与项目中的实际名称不同。我认为这与以前的帖子有些不同。

const output = [
  {
    tab: 'Results',
    sections: [
      {
         section: '2017',
         items: [ { 'item that belongs here' }, { ... } ],
      },
  },
  {
    tab: 'Reports',
    sections: [
      {
         section: 'Marketing',
         items: [ { ... }, { ... } ],
      },
  },
...
]

我尝试使用lodash.groupby,但它并不能完全满足我的需求。关于如何处理它的任何想法?

非常感谢!!


问题答案:

这可以用一个巧妙的combinartion完成_.map_.groupBy

const items = [

  {

    tab: 'Results',

    section: '2017',

    title: 'Full year Results',

    description: 'Something here',

  },

    {

    tab: 'Results',

    section: '2017',

    title: 'Half year Results',

    description: 'Something here',

  },

    {

    tab: 'Reports',

    section: 'Marketing',

    title: 'First Report',

    description: 'Something here',

  }

];



function groupAndMap(items, itemKey, childKey, predic){

    return _.map(_.groupBy(items,itemKey), (obj,key) => ({

        [itemKey]: key,

        [childKey]: (predic && predic(obj)) || obj

    }));

}



var result = groupAndMap(items,"tab","sections",

                   arr => groupAndMap(arr,"section", "items"));





console.log(result);


<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>


 类似资料:
  • 我有这个: 我想要这个: 怎么做?谢了!

  • 本文向大家介绍使用MongoDB查询特定嵌套文档的对象数组,包括了使用MongoDB查询特定嵌套文档的对象数组的使用技巧和注意事项,需要的朋友参考一下 要查询对象数组中的嵌套文档,请使用find()。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是如何查询对象数组以获取特定的嵌套文档- 这将产生以下输出-

  • 尝试使用所有独特的硬币进行选择过滤器,但无法正确到达其末尾。 在循环浏览数据时,我可以得到所有硬币的列表。 我还想使用Set方法和spread操作符来获得唯一的值,但我不知道如何组合所有这些。

  • 我有一些数组,如果它们包含类似的值,我想返回这些数组的名称。 我有我的变量,它有多个数组,名字要么是,要么是,要么是。包含的只是变量中某些数组中相同的值。我需要返回数组中包含、和的数组的名称。因此,对于这个示例,我需要返回:。 通过这个函数抛出它们时,我得到一个错误。如何获取返回的数组?

  • 我有一个mongodb文档,我正在使用axios ajax调用来提取它。文档有一个对象数组,其中还包含一个嵌套的对象数组。每个对象都分配了一个mongo id。最顶端的数据显示在相应的最顶端的表示组件中,但对象的后续阵列不会显示在其相对表示组件中。我得到的错误是。“TypeError:this.props.card.rdfts未定义”,但会显示它的非数组同级。然而,当我查看react-dev工具和

  • 问题内容: 我必须遍历json数组对象。 它具有以下结构。 基本上我在做的是prod_1是产品的名称,并且prod_1的版本列表已填充在其中。 所以现在我想要的是产品的名称以及它的版本。 问题在于可能有很多产品和该产品下的许多版本。所以我需要可以在 javascript 中使用适当的循环结构来对其进行处理。 最好将循环将产品名称存储在一个变量中,将版本存储在另一个变量中,因为我需要对产品名称进行一