我的短语有两个词:
var phrase = "hello world"
我希望分割并分配如下:
var words = phrase.split(" ");
var word1 = words[0];
var word2 = words[1];
有比这三条线更简单的方法吗?
的 [更新] 的
我希望能够在一行中实现这一目标,例如:
var word1 word2 = phrase.split(" ");
有可能吗?
答案 0 :(得分:9)
如果您使用Javascript 1.7(不仅仅是ECMAscript),则可以使用destructuring assignment:
var [a, b] = "hello world".split(" ");
答案 1 :(得分:2)
我不是JavaScript专家,但是看看你的代码,我会说你可以提高它的效率。
您的代码调用拆分两次,这意味着必须解析原始字符串两次。虽然这可能不是什么大问题,但这种编程会增加。
因此,执行这样的代码通常会更有效:
var words = phrase.split(" ");
var word1 = words[0];
var word2 = words[1];
答案 2 :(得分:2)
我提出的唯一建议是缓存拆分结果,而不是重新计算。
var phrase = "hello world";
var splitPhrase = phrase.split(" ");
var word1 = splitPhrase[0];
var word2 = splitPhrase[1];
答案 3 :(得分:2)
var words = "hello world".split(" ");
var word1 = words[0];
var word2 = words[1];
同样长,但更具可读性。要回答你的问题,我认为上述内容很容易,而且没有进入正则表达式。
<强>更新强>
遗憾的是,JavaScript没有像Ruby那样的并行赋值功能。也就是说,
var word1, word2 = phrase.split(" ");
不会将word1
和word2
分别设置为words[0]
和words[1]
。
相反,它会将word1和word2都设置为返回的数组[“hello”,“world”]。
现在您可以使用返回的数组,而不是将结果显式设置为变量并通过索引访问它们。这对于避免在字符串很长时创建大量变量特别有用。
答案 4 :(得分:2)
晚会,但这是一个我用过的单行构造
var word1, word2;
(function(_){ word1 = _[0]; word2 = _[1]; })(phrase.split(" "));
答案 5 :(得分:1)
不确定你能用“少行”来做,但你当然不需要进行两次拆分。
var words = "hello world".split(" "),
word1 = words[0],
word2 = words[1];