用更短的方式替换下面的 if, else-if, else
Replace the below if, else-if, else in shorter way
我会在 javascript 中以更短的方式替换下面的 if, else-if, else
。我如何使用三元运算符或过滤器来做到这一点?有人可以建议吗?我添加了以下三元组但不知道如何包含 else 条件?
Then('I type {string} in {string} field', (textval, textboxname) => {
if (textboxname == "Trade Price") {
cy.get('#DetailsContainer .allowDigits.tradePrice-js').clear().type(parseInt(textval));
} else if (textboxname == "Email" || textboxname == "Work Phone" || textboxname == "Mobile Phone"|| textboxname == "Home Phone") {
cy.get('#content_container').parent().find('.fieldHeader').contains(textboxname)
.next().find('input')
.type(textval, { force: true })
} else {
cy.get('#content_container').parent().find('.fieldHeader').contains(textboxname)
.next()
.type(textval, { force: true })
}
});
//三元运算符
function example(…) {
return textboxname ? "Trade Price"
: textboxname ? "Mobile"
: textboxname ? "Work Phone"
: textboxname? "Home Phone"
: value4;
}
您似乎没有正确使用三元运算符。为了将您的第一段代码重构为三元运算符,您可以这样做:
return (textboxname === "Trade Price" ? {...code to be executed for condition}
: (textboxname == "Email" || textboxname == "Work Phone"
|| textboxname == "Mobile Phone"|| textboxname == "Home Phone")
? {...code to be executed for condition}
: {..final else condition}
);
BUT,在这些用例中,使用 switch-case
更简洁,更可取,因为您只关心一个变量的值并且需要相应地执行操作:
switch(textboxname) {
case "Trade Price":
cy.get('#DetailsContainer .allowDigits.tradePrice-js').clear().type(parseInt(textval));
break;
//perform same code for these 4 cases
case "Email":
case "Work Phone":
case "Mobile Phone":
case "Home Phone":
cy.get('#content_container').parent().find('.fieldHeader').contains(textboxname)
.next().find('input')
.type(textval, { force: true });
break;
//final else condition
default:
cy.get('#content_container').parent().find('.fieldHeader').contains(textboxname)
.next()
.type(textval, { force: true });
}
比为这类事情编写三元运算符要干净得多,你明白为什么了。
我会在 javascript 中以更短的方式替换下面的 if, else-if, else
。我如何使用三元运算符或过滤器来做到这一点?有人可以建议吗?我添加了以下三元组但不知道如何包含 else 条件?
Then('I type {string} in {string} field', (textval, textboxname) => {
if (textboxname == "Trade Price") {
cy.get('#DetailsContainer .allowDigits.tradePrice-js').clear().type(parseInt(textval));
} else if (textboxname == "Email" || textboxname == "Work Phone" || textboxname == "Mobile Phone"|| textboxname == "Home Phone") {
cy.get('#content_container').parent().find('.fieldHeader').contains(textboxname)
.next().find('input')
.type(textval, { force: true })
} else {
cy.get('#content_container').parent().find('.fieldHeader').contains(textboxname)
.next()
.type(textval, { force: true })
}
});
//三元运算符
function example(…) {
return textboxname ? "Trade Price"
: textboxname ? "Mobile"
: textboxname ? "Work Phone"
: textboxname? "Home Phone"
: value4;
}
您似乎没有正确使用三元运算符。为了将您的第一段代码重构为三元运算符,您可以这样做:
return (textboxname === "Trade Price" ? {...code to be executed for condition}
: (textboxname == "Email" || textboxname == "Work Phone"
|| textboxname == "Mobile Phone"|| textboxname == "Home Phone")
? {...code to be executed for condition}
: {..final else condition}
);
BUT,在这些用例中,使用 switch-case
更简洁,更可取,因为您只关心一个变量的值并且需要相应地执行操作:
switch(textboxname) {
case "Trade Price":
cy.get('#DetailsContainer .allowDigits.tradePrice-js').clear().type(parseInt(textval));
break;
//perform same code for these 4 cases
case "Email":
case "Work Phone":
case "Mobile Phone":
case "Home Phone":
cy.get('#content_container').parent().find('.fieldHeader').contains(textboxname)
.next().find('input')
.type(textval, { force: true });
break;
//final else condition
default:
cy.get('#content_container').parent().find('.fieldHeader').contains(textboxname)
.next()
.type(textval, { force: true });
}
比为这类事情编写三元运算符要干净得多,你明白为什么了。