ES6:如何在不使用Switch-case语句的情况下从嵌套JS对象/对象数组获取值

时间:2019-02-15 19:35:41

标签: ecmascript-6 webdriver-io

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错误:在市场部分收到的值不正确);
}
 

请告知谢谢

1 个答案:

答案 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 ');
}