ES6: Как получить значения из вложенного объекта JS / массива объектов, без использования оператора Switch-case - PullRequest
0 голосов
/ 15 февраля 2019

ES6: Как получить значения из вложенного объекта JS / массива объектов, без использования оператора Switch-case, для получения значений локатора.

Но мы не хотим использовать оператор 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 ');
}

Пожалуйста, сообщите спасибо

1 Ответ

0 голосов
/ 15 февраля 2019

Вы можете преобразовать ключ в соответствующий ключ, который хотите получить:

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 ');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...