根据嵌套数组重新排列对象数组

Mithun S

我有一个对象数组。每个对象包含另一个内部数组。我想将每个内部数组作为外部对象,并将其余的旧外部元素作为新创建的外部对象的子属性。

输入值

data = [
    {
      name: "Sam",
      ssn: 123,
      age: 25,
      hobbies: [{ name: "cricket" }, { name: "football" }]
    },
    {
      name: "John",
      ssn: 234,
      age: 25,
      hobbies: [{ name: "cricket" }, { name: "football" }]
    },
    {
      name: "Mathew",
      ssn: 345,
      age: 25,
      hobbies: [{ name: "cricket" }, { name: "football" }, {name: "carroms"}]
    }
  ];

预期产量

[
      {
        name: "cricket",
        person_details: [
          { name: "Sam", ssn: 123, age: 25 },
          { name: "John", ssn: 234, age: 25 },
          { name: "Mathew", ssn: 345, age: 25 }
        ]
      },
      {
        name: "football",
        person_details: [
          { name: "Sam", ssn: 123, age: 25 },
          { name: "John", ssn: 234, age: 25 },
          { name: "Mathew", ssn: 345, age: 25 }
        ]
      },
      {
        name: "carroms",
        person_details: [          
          { name: "Mathew", ssn: 345, age: 25 }
        ]
      }
    ]

我尝试使用减少尝试如下

this.data = this.data.reduce(
  (a, x) => [...x.hobbies.map(h => ({ ...x, hobbies: [h] }))],
  []
);
妮娜·斯科茨(Nina Scholz)

您可以缩小数组并为结果集寻找相同的名称。

var data = [{ name: "Sam", ssn: 123, age: 25, hobbies: [{ name: "cricket" }, { name: "football" }] }, { name: "John", ssn: 234, age: 25, hobbies: [{ name: "cricket" }, { name: "football" }] }, { name: "Mathew", ssn: 345, age: 25, hobbies: [{ name: "cricket" }, { name: "football" }, { name: "carroms" }] }],
    result = data.reduce((r, { hobbies, ...o }) => {
        hobbies.forEach(({ name }) => {
            var group = r.find(q => q.name === name);
            if (!group) r.push(group = { name, person_details: [] });
            group.person_details.push(o);
        })
        return r;
    }, []);

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

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

根据公共键/值对重新排列对象数组

来自分类Dev

根据每个对象的ID重新排列数组

来自分类Dev

AngularJS $ scope数组对象重新排列

来自分类Dev

Javascript-按数组重新排列对象数组(值)

来自分类Dev

重新排列WP_Post对象和数组的数组

来自分类Javascript

根据嵌套数组对象过滤对象

来自分类Dev

重新排列numpy数组

来自分类Dev

重新排列JavaScript数组

来自分类Dev

根据JSON数组重新排列HTML表格数据

来自分类Java

Java根据元素编号重新排列数组

来自分类Dev

JavaScript:根据与x的绝对差重新排列数组元素

来自分类Dev

根据值重新排列数组数据并更新键名称

来自分类Dev

根据对象的嵌套数组进行过滤

来自分类Dev

Javascript通过相同的对象键重新排列数组

来自分类Dev

无法根据嵌套数组过滤对象数组

来自分类Dev

在cmd中重新排列数组元素

来自分类Dev

重新排列数组索引雄辩的Laravel

来自分类Dev

重新排列NumPy数组中的值

来自分类Dev

在Python中重新排列数组

来自分类Dev

排序和重新排列(不同的)数组

来自分类Dev

重新排列Python argparse参数组

来自分类Java

用Java重新排列数组

来自分类Dev

在React JS中重新排列数组

来自分类Dev

合并多个对象与对象数组中值的总和,并在javascript中重新排列数组

来自分类Dev

根据数字顺序重新排列数组元素,并以数组id表示

来自分类Python

在数组中重新排列数组中的数组

来自分类Dev

根据MongoDB中的属性更新嵌套数组对象

来自分类Dev

根据嵌套数组中的条件选择对象

来自分类Dev

javascript根据条件从对象的嵌套数组返回属性值

TOP 榜单

热门标签

归档