首页 > 解决方案 > 检查一个元素是否在 2 个数组之间是通用的,然后从中分配值

问题描述

在我的 Angular 8 应用程序中,我有 2 个数组:

array1 = [{
        "SubType": "2|3|4|5|6",
    },
    {
        "SubType": "2",
    },
    {
        "SubType": "3|4",
    },
    {
        "SubType": "6",
    },
    {
        "SubType": "3|6",
    },
]

&

array2 = [{
        "id": 2,
        "type": "1",
    },
    {
        "id": 3,
        "type": "5",
    },
    {
        "id": 4,
        "type": "4",
    },
    {
        "id": 5,
        "type": "3",
    },
    {
        "id": 6,
        "type": "2",
    }
]

我正在尝试检查每个元素并查看"SubType"array1元素(id)是否存在array2,如果存在则将其分配"type"给一个变量。"SubType"是| 分隔 which I 并使用 . 转换为数组array1..split('|')。这在分配给变量时需要用逗号分隔。我尝试使用数组过滤器,但我无法找到循环遍历第二个数组的方法。任何人都可以帮忙吗?

array1.forEach(reg => {
    if (reg.SubType) {
        let subTypeTemp = reg.SubType.split('|');
        let tempVariable = subTypeTemp.some(ele => {
            let stringToassign = '';
            for (let i = 0; i < array2.length; i++) {
                if (ele == array2[i].id) {
                    stringToassign += array2[i].type + ",";
                }
            }
        })
    }
})

标签: javascriptangular

解决方案


您可以采取 aMap并防止array2一遍又一遍地循环以获得typewant id

var array1 = [{ SubType: "2|3|4|5|6" }, { SubType: "2" }, { SubType: "3|4" }, { SubType: "6" }, { SubType: "3|6" }],
    array2 = [{ id: 2, type: "1" }, { id: 3, type: "5" }, { id: 4, type: "4" }, { id: 5, type: "3" }, { id: 6, type: "2" }],
    types = new Map(array2.map(({ id, type }) => [id.toString(), type])),
    result = array1.map(({ SubType }) => SubType
        .split('|')
        .map(Map.prototype.get, types)
        .join()
    );

console.log(result);


推荐阅读