如何分割和分配2个单词?

时间:2011-03-30 17:35:54

标签: javascript string split

我的短语有两个词:

var phrase = "hello world"

我希望分割并分配如下:

var words = phrase.split(" ");
var word1 = words[0];
var word2 = words[1];

有比这三条线更简单的方法吗?

[更新]

我希望能够在一行中实现这一目标,例如:

var word1 word2 = phrase.split(" ");

有可能吗?

6 个答案:

答案 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(" ");不会将word1word2分别设置为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];