javascript - 在 JavaScript 中检查嵌套数组是否包含另一个嵌套数组的任何元素

标签 javascript arrays search

我有 2 个嵌套数组,我想检查 id 是否来自 list1 以及 list2 中是否有相同的 id,添加 list2 的该对象 + tagcountlist1 到新数组。新数组具有 tagcount 以及 list1 中与 list2 中的 id 相同的 id 详细信息列表

注意:这两个列表的大小不同

提前感谢您的帮助

例如:

列表1

const list1 = [
    {
        "id": [
            "5cca1dbc-dd5c-498f-8f83-735062c05240",
            "2a10c30a-7c3a-4081-8246-9d37e19c2d6f",
            "3128f36c-1c79-4301-b08f-e0182c256c03"
        ],
        "tag": "tag1",
        "count": {
            "low": 53,
            "high": 0
        }
    },
    {
        "id": [
            "510019af-1728-4628-9019-343cd3c1b3e1",
            "fb420746-4d11-4d2e-ab7f-b8a73e5b8f8e",
            "adf0cd4c-3072-4ecf-9aa7-ecd5580c31ae"
        ],
        "tag": "tag2",
        "count": {
            "low": 43,
            "high": 0
        }
    }
]

列表2

[
    {
        "id": "5cca1dbc-dd5c-498f-8f83-735062c05240",
        "createdDate": "2017-10-08T22:40:33.020Z",
        "modifiedDate": "2017-10-08T22:40:33.020Z",
        "title": "Good morning! #tag1",
        "text": " ",
        "media": [
            {
                "id": "1f8c564c-91f1-457c-b4c1-0820c03861b4",
                        "metadata": {
                            "mimetype": "image/jpeg",
                            "imageHeight": 400,
                            "imageWidth": 300
                        }
            }
        ],
        "topics": [
            {
                "topicId": "22a96a83-def3-4981-bc91-9277464b7105"
            },
            {
                "name": "Fashion",
                "topicId": "6d4caea2-8387-42f3-977d-06a4bb063c44"
            }
        ],
        "language": null,
        "sourceId": "d25205ca-2ef308261113",
    },
    {
        "id": "fb420746-4d11-4d2e-ab7f-b8a73e5b8f8e",
        "createdDate": "2017-10-08T22:40:33.020Z",
        "modifiedDate": "2017-10-08T22:40:33.020Z",
        "title": "Good morning! #tag1",
        "text": " ",
        "media": [
            {
                "id": "1f8c564c-91f1-457c-b4c1-0820c03861b4",
                        "metadata": {
                            "mimetype": "image/jpeg",
                            "imageHeight": 400,
                            "imageWidth": 300
                        }
            }
        ],
        "topics": [
            {
                "topicId": "22a96a83-def3-4981-bc91-9277464b7105"
            },
            {
                "name": "Fashion",
                "topicId": "6d4caea2-8387-42f3-977d-06a4bb063c44"
            }
        ],
        "language": null,
        "sourceId": "d25205ca-2ef308261113",
    },
    {
        "id": "efde2bc9-018b-49c1-9c01-a4eda9817a33",
        "createdDate": "2017-10-08T22:40:33.020Z",
        "modifiedDate": "2017-10-08T22:40:33.020Z",
        "title": "Good morning! #tag1",
        "text": " ",
        "media": [
            {
                "id": "1f8c564c-91f1-457c-b4c1-0820c03861b4",
                        "metadata": {
                            "mimetype": "image/jpeg",
                            "imageHeight": 400,
                            "imageWidth": 300
                        }
            }
        ],
        "topics": [
            {
                "topicId": "22a96a83-def3-4981-bc91-9277464b7105"
            },
            {
                "name": "Fashion",
                "topicId": "6d4caea2-8387-42f3-977d-06a4bb063c44"
            }
        ],
        "language": null,
        "sourceId": "d25205ca-2ef308261113",
    }
]

新数组

 [
{
    "tag": "tag1",
    "count": {
        "low": 53,
        "high": 0
    },
    "details": [
               {
        "id": "5cca1dbc-dd5c-498f-8f83-735062c05240",
        "createdDate": "2017-10-08T22:40:33.020Z",
        "modifiedDate": "2017-10-08T22:40:33.020Z",
        "title": "Good morning! #tag1",
        "text": " ",
        "media": [
            {
                "id": "1f8c564c-91f1-457c-b4c1-0820c03861b4",
                        "metadata": {
                            "mimetype": "image/jpeg",
                            "imageHeight": 400,
                            "imageWidth": 300
                        }
            }
        ],
        "topics": [
            {
                "topicId": "22a96a83-def3-4981-bc91-9277464b7105"
            },
            {
                "name": "Fashion",
                "topicId": "6d4caea2-8387-42f3-977d-06a4bb063c44"
            }
        ],
        "language": null,
        "sourceId": "d25205ca-2ef308261113",
    }
 ]
}
]

最佳答案

迭代list1,检查id是否存在于list2中,以及是否将其添加到新数组中。

例如

var result = [];

for (let item of list1) {
  let details = list2.filter(l2 => item.id.includes(l2.id));
  if (details.length > 0) {
    result.push({
      tag: item.tag,
      count: item.count,
      details: details
    });
  }
}

如果您希望 list1 中的所有项都显示出来,而不管 list2 中是否存在 id,您可以使用map并为 list1 中的每个项目返回一个新对象。

var result = list1.map(l1 => {
  return {
    tag: l1.tag,
    count: l1.count,
    details: list2.filter(l2 => l1.id.includes(l2.id))
  };
});

const list1 = [{
    "id": [
      "5cca1dbc-dd5c-498f-8f83-735062c05240",
      "2a10c30a-7c3a-4081-8246-9d37e19c2d6f",
      "3128f36c-1c79-4301-b08f-e0182c256c03"
    ],
    "tag": "tag1",
    "count": {
      "low": 53,
      "high": 0
    }
  },
  {
    "id": [
      "510019af-1728-4628-9019-343cd3c1b3e1",
      "fb420746-4d11-4d2e-ab7f-b8a73e5b8f8e",
      "adf0cd4c-3072-4ecf-9aa7-ecd5580c31ae"
    ],
    "tag": "tag2",
    "count": {
      "low": 43,
      "high": 0
    }
  }
];

const list2 = [{
    "id": "5cca1dbc-dd5c-498f-8f83-735062c05240",
    "createdDate": "2017-10-08T22:40:33.020Z",
    "modifiedDate": "2017-10-08T22:40:33.020Z",
    "title": "Good morning! #tag1",
    "text": " ",
    "media": [{
      "id": "1f8c564c-91f1-457c-b4c1-0820c03861b4",
      "metadata": {
        "mimetype": "image/jpeg",
        "imageHeight": 400,
        "imageWidth": 300
      }
    }],
    "topics": [{
        "topicId": "22a96a83-def3-4981-bc91-9277464b7105"
      },
      {
        "name": "Fashion",
        "topicId": "6d4caea2-8387-42f3-977d-06a4bb063c44"
      }
    ],
    "language": null,
    "sourceId": "d25205ca-2ef308261113",
  },
  {
    "id": "fb420746-4d11-4d2e-ab7f-b8a73e5b8f8e",
    "createdDate": "2017-10-08T22:40:33.020Z",
    "modifiedDate": "2017-10-08T22:40:33.020Z",
    "title": "Good morning! #tag1",
    "text": " ",
    "media": [{
      "id": "1f8c564c-91f1-457c-b4c1-0820c03861b4",
      "metadata": {
        "mimetype": "image/jpeg",
        "imageHeight": 400,
        "imageWidth": 300
      }
    }],
    "topics": [{
        "topicId": "22a96a83-def3-4981-bc91-9277464b7105"
      },
      {
        "name": "Fashion",
        "topicId": "6d4caea2-8387-42f3-977d-06a4bb063c44"
      }
    ],
    "language": null,
    "sourceId": "d25205ca-2ef308261113",
  },
  {
    "id": "efde2bc9-018b-49c1-9c01-a4eda9817a33",
    "createdDate": "2017-10-08T22:40:33.020Z",
    "modifiedDate": "2017-10-08T22:40:33.020Z",
    "title": "Good morning! #tag1",
    "text": " ",
    "media": [{
      "id": "1f8c564c-91f1-457c-b4c1-0820c03861b4",
      "metadata": {
        "mimetype": "image/jpeg",
        "imageHeight": 400,
        "imageWidth": 300
      }
    }],
    "topics": [{
        "topicId": "22a96a83-def3-4981-bc91-9277464b7105"
      },
      {
        "name": "Fashion",
        "topicId": "6d4caea2-8387-42f3-977d-06a4bb063c44"
      }
    ],
    "language": null,
    "sourceId": "d25205ca-2ef308261113",
  }
];

var result1 = [];

for (let item of list1) {
  let details = list2.filter(l2 => item.id.includes(l2.id));
  if (details.length > 0) {
    result1.push({
      tag: item.tag,
      count: item.count,
      details: details
    });
  }
}

console.log(result1);

var result2 = list1.map(l1 => {
  return {
    tag: l1.tag,
    count: l1.count,
    details: list2.filter(l2 => l1.id.includes(l2.id))
  };
});

console.log(result2);

关于javascript - 在 JavaScript 中检查嵌套数组是否包含另一个嵌套数组的任何元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53736567/

相关文章:

search - Google 如何确定将页面编入索引作为讨论页面?

search - 定制分析仪Elasticsearch Soundex Plus Snowball

Javascript继承构造函数

c# - 在超出边界的某个步骤继续遍历数组

带有来自另一个常量数组的变量的常量数组

javascript - 从多个数组中提取随机项

arrays - Swift 4 Struct 按包含的参数搜索

javascript 一次性实现更多功能

javascript - 获取数据列表中所选项目的 ID

javascript - 如何在 JavaScript 中更改表格的行和列中的元素