对具有嵌套级别的对象数组进行分组

拉吉什

我有一个表格模式数组对象,如下所示,直到n级。可以是任何父母子女的记录

var records = [
  { country: "USA", state: "FLORIDA", city: "city1" },
  { country: "USA", state: "FLORIDA", city: "city2" },
  { country: "USA", state: "FLORIDA", city:"city3" },
  { country: "USA", state: "ALASKA" },
  { country: "USA", state: "ALBAMA" },
]

var columns = ["country","state","city"]  // upto n column

我需要将以下格式分组为n级,因为可以有n个关系,将记录按以下格式分组

{
  sequencer: 1, value: 'USA', loop: [
    { sequencer: 1, value: 'FLORIDA', loop: [
      { sequencer: 1, value: 'city1' },
      { sequencer: 2, value: 'city2' },
      { sequencer: 3, value: 'city3' },
    ], },
    { sequencer: 2, value: 'ALASKA' },
    { sequencer: 3, value: 'ALBAMA' },
  ],
}

有人可以编写一个递归函数来对n级列对象进行分组。谢谢

妮娜·斯科茨(Nina Scholz)

您可以通过避免不必要的循环属性来对数据进行分组。

const
    data = [{ country: "USA", state: "FLORIDA", city: "city1" }, { country: "USA", state: "FLORIDA", city: "city2" }, { country: "USA", state: "FLORIDA", city: "city3" }, { country: "USA", state: "ALASKA" }, { country: "USA", state: "ALBAMA" }],
    keys = ['country', 'state', 'city'],
    result = data.reduce((loop, o) => {
        keys
            .map(k => o[k])
            .filter(Boolean)
            .reduce((r, value) => {
                let temp = (r.loop ??= []).find(q => q.value === value);
                if (!temp) r.loop.push(temp = { sequence: r.loop.length + 1, value });
                return temp;
            }, { loop });
        return loop;
    }, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫:如何对行中具有多个级别的计数进行分组?

使用 Realm 在查询中过滤具有两个嵌套级别的对象

计算具有未知嵌套级别的多维数组中的相同值

* ng对于具有不同键和级别的嵌套数组的Angular

在具有 id 和日期的对象数组中嵌套分组?

具有多个分组级别的R条形图

使用嵌套级别的对象和数组动态更新状态

删除JS嵌套对象数组中任何级别的项目

如何对具有相同键值对的对象数组进行分组

具有双嵌套级别的SQL查询

具有3个级别的MongoDB嵌套查询

如何设计具有更高嵌套级别的表?

具有可变嵌套级别的 SQL Sever JSON 输出

将数组与对象数组进行比较,并返回具有分组日期的新对象数组

JSON字符串化跳过具有三个以上级别的跳过嵌套对象

比较具有不同精度级别的Date对象

LINQ GroupBy对具有多个级别的对象

具有 HTML 树级别的 PHP 数组

合并两个嵌套级别的对象数组并返回关键对象数组

当对象可以具有不同类型时如何按键对对象数组进行分组

javascript 按子对象值对嵌套的对象数组进行分组

如何映射未知嵌套级别的数组?

嵌套的ifelse语句,带有编程级别的嵌套级别

如何按嵌套对象值对具有唯一键的对象数组进行排序

R中具有不同级别的李克特分组

JS Mapping 对象选择嵌套数组键值以使其成为更高级别的键值

具有嵌套对象数组的MongoDB聚合

减少具有嵌套对象的数组

如何存储具有动态选项和多个级别的各种嵌套列表?