按属性值对数组中的对象进行分组

高朗沙

我敢肯定这里已经有人问过类似的问题,所以如果这是多余的,我提前道歉,但我确实看了看并没有找到适合我特定需求的东西。希望有人能帮忙。

我有一个 pageSections 数组:

const sections = [
  {
    data: { 
      order: 0, 
      title: "home_hero", 
      block_type: "hero", 
      pages: ["home"]       
    },
  },
  {
    data: {
      order: 0,
      title: "about_hero",
      block_type: "hero",
      pages: ["about"],
    },
  },
  {
    data: {
      order: 1,
      title: "home_intro",
      block_type: "content_block",
      pages: ["home"],
    },
  },
  {
    data: {
      order: 0,
      title: "service_card1",
      block_type: "card",
      pages: ["home", "services"],
    },
  },
  {
    data: {
      order: 1,
      title: "service_card2",
      block_type: "card",
      pages: ["home", "services"],
    },
  },
  {
    data: {
      order: 2,
      title: "service_card3",
      block_type: "card",
      pages: ["home", "services"],
    },
  },
];

我想将作为卡片块的每个部分组合到同一个原始阵列上的它们自己的阵列中。所以最终的结果是这样的:

const sections = [
  {
    data: {
      order: 0,
      title: "home_hero",
      block_type: "hero",
      pages: ["home"],
    },
  },
  {
    data: {
      order: 0,
      title: "about_hero",
      block_type: "hero",
      pages: ["about"],
    },
  },
  {
    data: {
      order: 1,
      title: "home_intro",
      block_type: "content_block",
      pages: ["home"],
    },
  },
  [
    {
      data: {
        order: 0,
        title: "service_card1",
        block_type: "card",
        pages: ["home", "services"],
      },
    },
    {
      data: {
        order: 1,
        title: "service_card2",
        block_type: "card",
        pages: ["home", "services"],
      },
    },
    {
      data: {
        order: 2,
        title: "service_card3",
        block_type: "card",
        pages: ["home", "services"],
      },
    },
  ],
];

我很确定我需要使用 reduce、map 和 filter 的某种组合,但似乎无法解决它。任何帮助将不胜感激!谢谢!

贾罗德·沃茨

我非常有信心有一种方法可以在一行中做到这一点,但我无法弄清楚。

但是,这是一个 2-lined 解决方案,可以实现您想要的:

let grouped = sections.filter(section => section.data.block_type !== "card");
grouped.push(sections.filter(section => section.data.block_type == "card"));

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按属性对数组对象进行分组?

如何使用reduce按属性对数组中的项目进行分组并返回新对象数组

按值对数组对象进行分组 - javascript

按名称对数组中的对象进行分组

根据对象中键的值对数组中的对象进行分组

按值对数组进行分组 php

对数组对象中相同值的重复项进行分组

按属性值对数组中的对象进行计数并以HTML显示结果

在JavaScript中按多个对象属性对数组进行排序

对数组值进行分组并添加属性

如何按对象的值对对象数组进行分组并在新属性中求和

根据值对数组对象进行分组

按属性对对象数组进行分组并对值求和

按最高值对数组中的对象进行排序

如何对数组中的对象进行分组

按特定顺序按属性值对数组对象进行排序

如何按顺序按每个对象中的值对数组中对象的索引进行排序

使用jQuery按类别ID对数组对象进行分组

按多个对象对数组进行分组 - JavaScript

如何按各自的组号对数组中的对象进行分组

如何按特定值对数组进行分组?

按对象属性值对数组进行排序,该属性值与第二个数组中的字符串相同

如何通过Javascript中的唯一属性对数组中的对象进行分组?

在数组的一个属性上按字母顺序对数组中的对象进行排序

按对象的属性之一对数组列表进行排序(双精度值)

按属性将数组中的对象分组

如何按日期对数组中的项目进行分组?

如何在Swift中按日期对数组进行分组?

如何按字符串值对数组中的对象数组进行排序?