我正在使用过滤器菜单。我有一个类似下面的对象。从我的过滤器菜单中,我将得到一个对象结果:
{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": []
}
},
}
答案 0 :(得分:1)
您可以按正确的顺序获取所需键的数组,并使用过滤器对象的值简化给定对象。
结果是一个具有所需ID或undefined
的对象。
function getID(filter) {
var keys = ['gm', 'rm', 'am', 'sales', 'state'];
return keys.reduce((o, k) => (o || {})[filter[k]], data);
}
var data = { "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": [] } } } },
result = getID({ gm: "FS H", rm: "RSM1", am: "BKK PULL", sales: "BKK SR1", state: "delhi" });
console.log(result);
答案 1 :(得分:0)
这是我目前可以想到的最简单的方法。
您可以随时进行改进,因为这只是您的指南。
const filter = {
gm: "FS H",
rm: "RSM1",
am: "BKK PULL",
sales: "BKK SR1",
state: "delhi"
}
const data = {
"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": []
}
},
}
}
console.log(data[filter.gm][filter.rm][filter.am][filter.sales][filter.state])