Javascript - 根据公共值重构对象数组

用户3523583

我的对象输入数组是这样的,我有一个如下所示的输入数组:

[{"id": 657, "name": "Amadeus Basin", "contenttype": "province"}
{"id": 1173, "name": "Amazonas Basin", "contenttype": "province"}
{"id": 373, "name": "American Samoa", "contenttype": "countries"}
{"id": 1, "name": "Samoa", "contenttype": "marine"}
{"id": 796, "name": "Amhara", "contenttype": "province"}]

我想实现的是:

[
    {
    "contenttype": "province",
    "content" : [
        {
            "id": 657,
            "name": "Amadeus Basin"
        },
        {
            "id": 1173,
            "name": "Amazonas Basin"
        },
        {
            "id": 796,
            "name": "Amhara"
        }
    ]
    }, {

        "contenttype": "countries",
        "content": [
            {
                "id": 373,
                "name" : "American Samoa"
            }
        ]

    },
    {
        "contenttype": "countries",
        "content": [
        {
            "id": 1,
            "name" : "Samoa"
        }
    ]

    }

]

根据一个值拆分数组中的对象,并在这些新创建的对象中创建相同对象的子数组。使用 lodash 也会很好。

苏伦·斯拉皮安

您可以使用reduce函数迭代每个项目,然后检查它是否存在于数组中,如果没有找到,则添加新的,如果找到 - 推入它

const data = [{"id": 657, "name": "Amadeus Basin", "contenttype": "province"},
{"id": 1173, "name": "Amazonas Basin", "contenttype": "province"},
{"id": 373, "name": "American Samoa", "contenttype": "countries"},
{"id": 1, "name": "Samoa", "contenttype": "marine"},
{"id": 796, "name": "Amhara", "contenttype": "province"}];

const grouped = data.reduce((acc, item) => {

  const found = acc.find(i => i.contenttype === item.contenttype);
  const content = {id: item.id, name: item.name};
  
  if(found) {
     found.content.push(content);
  } else {
     acc.push({contenttype: item.contenttype, content: [content] })
  }
  
  return acc;

}, []);

console.log(grouped);

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

重构Javascript对象数组

根据Javascript中的公共值合并同一数组中的对象

根据输入值/ javascript过滤数组对象

JavaScript根据属性值过滤对象数组

根据对象字段值查找javascript“对象数组”的索引

Javascript:根据对象内部的值从数组中删除对象

根据对象的值将javascript对象键排序为数组

Javascript:根据子对象值在数组中获取对象

JavaScript中的重构数组和对象

循环对象数组并根据定义的静态键显示值 javascript

javascript-根据数组值选择json对象项

JavaScript 根据值对对象数组进行排序(条件排序)

javascript根据属性值从数组中删除所有对象

Javascript根据特定值合并数组中的对象

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

如何根据名称合并数组javascript中的重复对象值

根据其值过滤JavaScript深度嵌套的对象数组

Javascript-通过带有标签的公共值将对象数组分组

重构 Javascript 对象遍历

在 Javascript 中重构对象

根据多值对象过滤JavaScript对象数组

以最有效的方式重构 JavaScript 对象数组

Javascript根据属性值从对象数组中获取下一个对象

根据对象属性值从 javascript 对象数组中删除重复项

Javascript-根据存在于单独数组中的键的值过滤对象数组

根据Javascript中不同的搜索属性值数组,匹配数组中的一组对象

根据javascript中的另一个数组更改对象数组的值

Javascript:根据属性值将对象数组拆分为具有动态名称的单独数组

如何使用javascript根据另一个数组值过滤对象数组?