ES6:如何在不使用 Switch-case 语句的情况下从对象的嵌套 JS object/Array 中获取值
ES6: How to get values from nested JS object/Array of objects, without using Switch-case statement
ES6:如何在不使用 Switch-case 语句的情况下从对象的嵌套 JS object/Array 中获取值,以检索定位器值。
但是我们不想使用switch-case
语句。
请就函数式编程替代方案提出建议
let selector = 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'
}
},
};
我们要用函数式编程替换的代码如下:
switch (heading.toString().toLowerCase()) {
case 'value':
selector = browser.isIOS ? LOCATORS.tabHeadings.IOS_SELCT.ValueTab : LOCATORS.tabHeadings.ANDROID_SELECT.ValueTab;
break;
case 'units':
selector = browser.isIOS ? LOCATORS.tabHeadings.IOS_SELCT.UnitsTab : LOCATORS.tabHeadings.ANDROID_SELECT.UnitsTab;
break;
case 'price':
selector = browser.isIOS ? LOCATORS.tabHeadings.IOS_SELCT.PriceTab : LOCATORS.tabHeadings.ANDROID_SELECT.PriceTab;
break;
default:
throw new Error('\n Error: Incorrect value received on Market Section ');
}
请指教谢谢
您可以将密钥转化为您想要得到的对应密钥:
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 ');
}
ES6:如何在不使用 Switch-case 语句的情况下从对象的嵌套 JS object/Array 中获取值,以检索定位器值。
但是我们不想使用switch-case
语句。
请就函数式编程替代方案提出建议
let selector = 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'
}
},
};
我们要用函数式编程替换的代码如下:
switch (heading.toString().toLowerCase()) {
case 'value':
selector = browser.isIOS ? LOCATORS.tabHeadings.IOS_SELCT.ValueTab : LOCATORS.tabHeadings.ANDROID_SELECT.ValueTab;
break;
case 'units':
selector = browser.isIOS ? LOCATORS.tabHeadings.IOS_SELCT.UnitsTab : LOCATORS.tabHeadings.ANDROID_SELECT.UnitsTab;
break;
case 'price':
selector = browser.isIOS ? LOCATORS.tabHeadings.IOS_SELCT.PriceTab : LOCATORS.tabHeadings.ANDROID_SELECT.PriceTab;
break;
default:
throw new Error('\n Error: Incorrect value received on Market Section ');
}
请指教谢谢
您可以将密钥转化为您想要得到的对应密钥:
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 ');
}