开发者问题收集

JS 拆分字符串之间的 if 语句

2016-03-26
1119

如何在拆分字符串之间放置 if 语句?显然我可以这样做:

if(lang == 'eng'){
  var a_string = 'hello';
}else if(lang == 'ger'){
  var a_string = 'hallo';
}

但在某些情况下这太长了。我想到的是以下内容:

var lang = (e.g. 'ger' or 'eng');

var a_string = 'h' + if(lang == 'eng'){'e'}else if(lang == 'ger'){'a'} + 'llo';

有没有办法在拆分字符串之间编写 if 语句?

2个回答

您可以使用 条件(三元)运算符

The conditional (ternary) operator is the only JavaScript operator that takes three operands. This operator is frequently used as a shortcut for the if statement.

Syntax

condition ? expr1 : expr2 
var lang = 'eng';
document.write('h' + (lang == 'eng' ? 'e' : lang == 'ger' ? 'a' : '') + 'llo' + '<br>');
lang = 'ger';
document.write('h' + (lang == 'eng' ? 'e' : lang == 'ger' ? 'a' : '') + 'llo');

另一种解决方案是使用 逻辑与 (&&) 逻辑或 (||)

var lang = 'eng';
document.write('h' + (lang == 'eng' && 'e' || lang == 'ger' && 'a' || '') + 'llo' + '<br>');
lang = 'ger';
document.write('h' + (lang == 'eng' && 'e' || lang == 'ger' && 'a' || '') + 'llo');
Nina Scholz
2016-03-26

或者,您可以将键/值对存储在对象中,这样就无需直接检查 lang 的值。如果您需要多次重复使用相同的值,这可能会有所帮助。

var greetings = {}
greetings.eng = 'e'
greetings.ger = 'a'

var lang = "eng"

"h" + greetings[lang] + "llo" // 'hello'

lang = "ger"

"h" + greetings[lang] + "llo" // 'hallo'
Joseph
2016-03-26