ES6:如何在不使用Switch-case语句的情况下从嵌套JS对象/对象数组获取值来检索定位器值。
但是我们不想使用 switch-case
语句。
请就函数式编程的替代建议
let选择器= null;
browser.timeoutsImplicitWait(3000);
const LOCATORS = {
topFilterIcon:'AXY',
tabHeadings:{
IOS_SELCT:{
ValueTab:“ bla”,
UnitsTab:“ bla2”,
PriceTab:“ bla3”
},
ANDROID_SELECT:{
ValueTab:“ abc1”,
UnitsTab:“ abc3”,
PriceTab:“ abc4”
}
},
};
我们要用功能编程替换的代码如下:
开关(heading.toString()。toLowerCase()){
情况“值”:
选择器= browser.isIOS? LOCATORS.tabHeadings.IOS_SELCT.ValueTab:LOCATORS.tabHeadings.ANDROID_SELECT.ValueTab;
打破;
案例“单位”:
选择器= browser.isIOS? LOCATORS.tabHeadings.IOS_SELCT.UnitsTab:LOCATORS.tabHeadings.ANDROID_SELECT.UnitsTab;
打破;
案例“价格”:
选择器= browser.isIOS? LOCATORS.tabHeadings.IOS_SELCT.PriceTab:LOCATORS.tabHeadings.ANDROID_SELECT.PriceTab;
打破;
默认:
抛出新的错误('\ n错误:在市场部分收到的值不正确);
}
请告知谢谢
答案 0 :(得分:1)
您可以将密钥转换为要获取的相应密钥:
let key = heading.toString();
key = key[0].toUpperCase() + key.slice(1).toLowerCase() + "Tab"
const selector = LOCATORS.tabHeadings[browser.isIOS ? "IOS_SELCT" : "ANDROID_SELECT"][key];
if (selector === undefined) {
throw new Error('\n Error: Incorrect value received on Market Section ');
}