How to split and assign 2 words?
I have phrase with two words:
var phrase = "hello world"
and I want to split and assign like in:
var words = phrase.split(" ");
var word1 = words[0];
var word2 = words[1];
Is there a easier way than this three lines?
[updated]
I looking to a way for do it in a single line, like:
var word1 word2 = phrase.split(" ");
开发者_运维技巧is it possible?
If you're using Javascript 1.7 (not just ECMAscript), you can use destructuring assignment:
var [a, b] = "hello world".split(" ");
var words = "hello world".split(" ");
var word1 = words[0];
var word2 = words[1];
Is just as long, but much more readable. To answer your question, I think the above is easy enough without getting into regex.
Update
JavaScript unfortunately does not have parallel assignment functionality like Ruby. That is,
var word1, word2 = phrase.split(" ");
will not set word1
and word2
to words[0]
and words[1]
respectively.
Instead it would set both word1 and word2 to the returned array ["hello", "world"].
Now you could use the returned array instead of explicitly setting the results into variables and access them by index. This is especially useful to avoid creating a large number of variables when the string is quite long.
I'm not a JavaScript expert but, looking at your code, I'd say you could make it more efficient.
Your code calls split twice, which means the original string must be parsed twice. While that may not be a big deal, this kind of programming adds up.
So it would generally be more efficient to do code like this:
var words = phrase.split(" ");
var word1 = words[0];
var word2 = words[1];
The only suggestion I make is that you cache the result of the split, rather than recalculating it.
var phrase = "hello world";
var splitPhrase = phrase.split(" ");
var word1 = splitPhrase[0];
var word2 = splitPhrase[1];
Late to the party, but here is a 1-line construct that I've used
var word1, word2;
(function(_){ word1 = _[0]; word2 = _[1]; })(phrase.split(" "));
Not sure you can do it in "less lines" but you certainly don't need to do the split twice.
var words = "hello world".split(" "),
word1 = words[0],
word2 = words[1];
精彩评论