如何合并具有相同ID的对象和嵌套在数组中的对象对应的数组对象

秘un

我正在尝试将具有相同ID的对象及其具有相同值的对象对应数组合并到嵌套在对象内部的对象的对应ID中。例如

[{
"id": "1",
"reference": "<p>test 1</p>",
"list": [
  {
    "text": "<p>text a</p>",
  },
  {
    "text": "<p>text b</p>",
  }
]},{
"id": "1",
"reference": "<p>test 1</p>",
"list": [
  {
    "text": "<p>text b</p>",
  }
]},{
"id": "2",
"reference": "<p>test 2</p>",
"list": [
  {
    "text": "<p>test e</p>",
  },
  {
    "text": "<p>text c</p>",
  },
  {
    "text": "<p>text c</p>",
  }
]},{
"id": "2",
"reference": "<p>test 2</p>",
"list": [
  {
    "text": "<p>test e</p>",
  },
  {
    "text": "<p>text c</p>",
  }
]},{
"id": "3",
"reference": "<p>test 3</p>",
"list": [
  {
    "text": "<p>text d</p>",
  }
]}]

预期的结果是

[{
"id": "1",
"reference": "<p>test 1</p>",
"list": [
  {
    "text": "<p>text a</p>",
  },
  {
    "text": "<p>text b</p>",
  }
]},{
"id": "2",
"reference": "<p>test 2</p>",
"list": [
  {
    "text": "<p>text c</p>",
  },
  {
    "text": "<p>test e</p>",
  }
]},{
"id": "3",
"reference": "<p>test 3</p>",
"list": [
  {
    "text": "<p>text d</p>",
  }
]}]

我尝试了以下方法,但没有得到预期的结果。不知道我要去哪里错了。请不要建议使用.reduce()

const originalArray = [
  {
    "id": "1",
    "reference": "<p>test 1</p>",
    "list": [
      {
        "text": "<p>text a</p>",
      },
      {
        "text": "<p>text b</p>",
      }
    ]
  },
  {
    "id": "1",
    "reference": "<p>test 1</p>",
    "list": [
      {
        "text": "<p>text b</p>",
      }
    ]
  },
  {
    "id": "2",
    "reference": "<p>test 2</p>",
    "list": [
      {
        "text": "<p>test e</p>",
      },
      {
        "text": "<p>text c</p>",
      },
      {
        "text": "<p>text c</p>",
      }
    ]
  },
  {
    "id": "2",
    "reference": "<p>test 2</p>",
    "list": [
      {
        "text": "<p>test e</p>",
      },
      {
        "text": "<p>text c</p>",
      }
    ]
  },
  {
    "id": "3",
    "reference": "<p>test 3</p>",
    "list": [
      {
        "text": "<p>text d</p>",
      }
    ]
  }
];

    var newArray = [];
    var lookupObject = {};
    for (var i in originalArray) {
      lookupObject[originalArray[i]["id"]] = originalArray[i];
    }
    for (i in lookupObject) {
      newArray.push(lookupObject[i]);
    }
    console.log(newArray)

提前致谢。

妮娜·斯科茨(Nina Scholz)

您可以使用嵌套对象来跟踪可见值。

const
    originalArray = [{ id: "1", reference: "<p>test 1</p>", list: [{ text: "<p>text a</p>" }, { text: "<p>text b</p>" }] }, { id: "1", reference: "<p>test 1</p>", list: [{ text: "<p>text b</p>" }] }, { id: "2", reference: "<p>test 2</p>", list: [{ text: "<p>test e</p>" }, { text: "<p>text c</p>" }, { text: "<p>text c</p>" }] }, { id: "2", reference: "<p>test 2</p>", list: [{ text: "<p>test e</p>" }, { text: "<p>text c</p>" }] }, { id: "3", reference: "<p>test 3</p>", list: [{ text: "<p>text d</p>" }] }],
    newArray = [],
    lookupObject = {};

for (const item of originalArray) {
    if (!lookupObject[item.id]) {
        lookupObject[item.id] = { text: {}, payload: { ...item, list: [] } };
        newArray.push(lookupObject[item.id].payload);
    }
    for (const { text } of item.list) {
        if (!lookupObject[item.id][text]) {
            lookupObject[item.id][text] = true;
            lookupObject[item.id].payload.list.push({ text });
        }
    }
}

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

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

解构嵌套在数组中的对象

来自分类Dev

销毁嵌套在数组中的对象

来自分类Dev

如何更新嵌套在数组中的特定对象的状态

来自分类Dev

在js的数组中合并具有相同id的对象

来自分类Dev

合并数组中具有相同ID的对象

来自分类Dev

如何在数组中合并具有相同值的对象?

来自分类Dev

如何合并数组中具有相同键的对象?

来自分类Dev

如何从嵌套在数组对象内部的数组中删除重复的对象值?

来自分类Dev

如果对象具有相同的日期,则合并数组中的对象

来自分类Dev

合并具有相同值的对象数组中的对象

来自分类Dev

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

来自分类Dev

合并具有匹配的辅助对象的对象数组,这些辅助对象嵌套在主对象的根内部

来自分类Dev

查询 MongoDB 中嵌套在数组中的对象

来自分类Dev

反序列化嵌套在数组中的对象

来自分类Dev

排序嵌套在数组中的对象的高效算法

来自分类Dev

Mongodb:查询嵌套在数组中的json对象

来自分类Dev

遍历嵌套在嵌套在数组 React 中的对象中的数组

来自分类Dev

合并两个具有嵌套 id 的对象数组

来自分类Dev

合并具有相同键的对象数组

来自分类Javascript

根据相同的ID在数组内合并数组对象

来自分类Dev

如何合并具有相同键的对象数组

来自分类Dev

如何设置状态嵌套在对象数组中的数组

来自分类Dev

如何获得具有相同参数的嵌套对象数组

来自分类Dev

如何使用_.where通过ID查找嵌套在对象数组中的对象?

来自分类Dev

如何合并包含相同 id 的对象数组

来自分类Dev

如何访问和循环嵌套在另一个对象内部的对象中的数组?

来自分类Dev

如何显示嵌套在多个数组和对象中的对象的forEach

来自分类Dev

如何通过其键之一的值访问嵌套在数组中的对象?

来自分类Dev

如何在React JS中将setState与嵌套在数组中的对象一起使用?

Related 相关文章

  1. 1

    解构嵌套在数组中的对象

  2. 2

    销毁嵌套在数组中的对象

  3. 3

    如何更新嵌套在数组中的特定对象的状态

  4. 4

    在js的数组中合并具有相同id的对象

  5. 5

    合并数组中具有相同ID的对象

  6. 6

    如何在数组中合并具有相同值的对象?

  7. 7

    如何合并数组中具有相同键的对象?

  8. 8

    如何从嵌套在数组对象内部的数组中删除重复的对象值?

  9. 9

    如果对象具有相同的日期,则合并数组中的对象

  10. 10

    合并具有相同值的对象数组中的对象

  11. 11

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

  12. 12

    合并具有匹配的辅助对象的对象数组,这些辅助对象嵌套在主对象的根内部

  13. 13

    查询 MongoDB 中嵌套在数组中的对象

  14. 14

    反序列化嵌套在数组中的对象

  15. 15

    排序嵌套在数组中的对象的高效算法

  16. 16

    Mongodb:查询嵌套在数组中的json对象

  17. 17

    遍历嵌套在嵌套在数组 React 中的对象中的数组

  18. 18

    合并两个具有嵌套 id 的对象数组

  19. 19

    合并具有相同键的对象数组

  20. 20

    根据相同的ID在数组内合并数组对象

  21. 21

    如何合并具有相同键的对象数组

  22. 22

    如何设置状态嵌套在对象数组中的数组

  23. 23

    如何获得具有相同参数的嵌套对象数组

  24. 24

    如何使用_.where通过ID查找嵌套在对象数组中的对象?

  25. 25

    如何合并包含相同 id 的对象数组

  26. 26

    如何访问和循环嵌套在另一个对象内部的对象中的数组?

  27. 27

    如何显示嵌套在多个数组和对象中的对象的forEach

  28. 28

    如何通过其键之一的值访问嵌套在数组中的对象?

  29. 29

    如何在React JS中将setState与嵌套在数组中的对象一起使用?

热门标签

归档