javascript - 将值数组与另一个对象进行匹配

标签 javascript node.js

我对此很陌生,我有一个如下所示的对象数组,

arr1 = {
    "ID": "sss",
    "Name": "Ven"
    "Main": [
        {"ID": "asds-vg45"},
        {"ID": "rrra-2e82"}
    ]
}

还有另一个值对象,如下所示,

obj1 = {
    "AID": "ssasas222",
    "Main": {
    "asds-vg45" : {
        "NAME" : "Item1",
        "STML" : {
            "MIKE" : {
                "bearer" : {
                    "token" : "ya29.Gl0kBoYJD"
                },
                "STA" : true
            }
        },
        "STATUS" : true
    },
    "rrra-2e82" : {
        "NAME" : "Item2",
        "STML" : {
            "MIKE" : {
                "bearer" : {
                    "token" : "yas9.Gl0kBoYJD"
                },
                "STA" : true
            }
        },
        "STATUS" : true
    },
    "t655e-2e82" : {
        "NAME" : "Item2",
        "STML" : {
            "MIKE" : {
                "bearer" : {
                    "token" : "yas9.Gl0kBoYJD"
                },
                "STA" : true
            }
        },
        "STATUS" : true
    }
}

现在,我正在尝试获取一个新对象,其中包含“Main”对象的 obj1 中与“arr1”匹配的所有值以及“obj1”中的“ID”,这里的匹配 ID 是“Main”数组中的 ID,这在两者中都很常见,我试图获得的输出如下所示,

main_obj = {
    "ID": "sss",
    "Name": "Ven",
    "AID": "ssasas222"
    "Main": {
        "asds-vg45" : {
            "NAME" : "Item1",
            "STML" : {
                "MIKE" : {
                    "bearer" : {
                        "token" : "ya29.Gl0kBoYJD"
                    },
                    "STA" : true
                }
            },
            "STATUS" : true
        },
        "rrra-2e82" : {
            "NAME" : "Item2",
            "STML" : {
                "MIKE" : {
                    "bearer" : {
                        "token" : "yas9.Gl0kBoYJD"
                    },
                    "STA" : true
                }
            },
            "STATUS" : true
        }
    }
}

最佳答案

您可以将给定数据的键和对象映射为一个新对象。

var data = { AID: "ssasas222", Main: { "asds-vg45": { NAME: "Item1", STML: { MIKE: { bearer: { token: "ya29.Gl0kBoYJD" }, STA: true } }, STATUS: true }, "rrra-2e82": { NAME: "Item2", STML: { MIKE: { bearer: { token: "yas9.Gl0kBoYJD" }, STA: true } }, STATUS: true }, "t655e-2e82": { NAME: "Item2", STML: { MIKE: { bearer: { token: "yas9.Gl0kBoYJD" }, STA: true } }, STATUS: true } } },
    filter = { ID: "sss", Name: "Ven", Main: [{ ID: "asds-vg45" }, { ID: "rrra-2e82" }] },
    result = Object.assign(
        {},
        data,
        { Main: Object.assign(...filter.Main.map(({ ID }) => ({ [ID]: data.Main[ID] }))) }
    );

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

关于javascript - 将值数组与另一个对象进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52530801/

相关文章:

javascript - 如何将字符串值传递给 javascript 警报

javascript - 不和谐.js v12 : How do I await for messages in a DM channel?

javascript - 根据单选按钮的选择显示/隐藏文本文件

javascript - findOne() 不起作用 - 我的语法有问题吗?

javascript - 无法更新 Mongoose 模型

node.js - ExpressJS 和 RethinkDb 教程无法读取未定义的属性 'prototype'

javascript - 在新选项卡中打开多个链接并使用 puppeteer 操纵者循环切换焦点?

node.js - nodejs脚本之间的socket.io通信

javascript - 将相同数组/对象元素分配给相同元素的性能

javascript - 如何模糊可编辑内容中的表格单元格