Javascript 如何在嵌套对象中进行筛选?

Javascript 如何在嵌套对象中进行筛选?,javascript,jquery,Javascript,Jquery,我正在做一个过滤菜单。我有一个像下面这样的物体。从“过滤器”菜单中,我将获得一个对象结果: {gm: "FS H", rm: "RSM1", am: "BKK PULL", sales: "BKK SR1", state: "delhi", …} 从这个结果中,我需要找到关联的sa_id和pr_id。 从上面的结果来看:gm是最上面的菜单。rm根据选择的gm进行过滤 这是我的全部目标。现在我不知道如何过滤以获取我的id { "FS H": { "RSM1": { "BK

我正在做一个过滤菜单。我有一个像下面这样的物体。从“过滤器”菜单中,我将获得一个对象结果:

{gm: "FS H", rm: "RSM1", am: "BKK PULL", sales: "BKK SR1", state: "delhi", …}
从这个结果中,我需要找到关联的sa_id和pr_id。 从上面的结果来看:gm是最上面的菜单。rm根据选择的gm进行过滤

这是我的全部目标。现在我不知道如何过滤以获取我的id

{
"FS H": {
    "RSM1": {
        "BKK PULL": {
            "BKK SR1": {
                mumbai: {
                    sa_id: 34,
                    pr_id: 12
                },
                delhi: {
                    sa_id: 12,
                    pr_id: 32
                }
            }
        },
        "BKK PUSH": {
            "BKK BCDE1": [],
            "BKK BAKE SE1": []
        }
    },
}

这是目前我能想到的最简单的方法

你可以随时改进它,因为这只是给你的一个指南

const过滤器={
总经理:财政司司长,
rm:“RSM1”,
am:“BKK拉力”,
销售:“BKK SR1”,
国家:“德里”
}
常数数据={
“FS H”:{
“RSM1”:{
“BKK拉力”:{
“BKK SR1”:{
孟买:{
sa_id:34,
公共关系编号:12
},
德里:{
sa_id:12,
公共关系编号:32
}
}
},
“BKK推送”:{
“BKK BCDE1”:[],
“BKK烘焙SE1”:[]
}
},
}
}

console.log(data[filter.gm][filter.rm][filter.am][filter.sales][filter.state])
您可以按正确的顺序获取所需键的数组,并使用filter对象的值减少给定对象

结果是一个具有所需ID的对象,或
未定义的对象

函数getID(过滤器){
变量键=['gm'、'rm'、'am'、'sales'、'state'];
返回键.reduce((o,k)=>(o |{})[filter[k]],data);
}
var数据={“FS H”:{“RSM1”:{“BKK PULL”:{“BKK SR1”:{孟买:{sa_id:34,pr_id:12},德里:{sa_id:12,pr_id:32}},“BKK PUSH”:{“BKK BCDE1”:[],“BKK BAKE SE1”:[]},
结果=getID({gm:“FS H”,rm:“RSM1”,am:“BKK拉动”,销售:“BKK SR1”,州:“德里”});

控制台日志(结果)这不是一个数组-这是一个对象。很抱歉,这是一个对象。请添加想要的结果、用于测试的数据集、您的代码以及出现的错误。具有代表的用户应该知道,这样做不符合我的要求。是因为我被困在这里