I’d like to know if standard JS provides a way of splitting a string straight into a set of variables during their initial declaration. For example in Perl I would use:
my ($a, $b, $c) = split '-', $str;
In Firefox I can write
var [a, b, c] = str.split('-');
But this syntax is not part of the ECMAScript 5th edition and as such breaks in all other browsers. What I’m trying to do is avoid having to write:
var array = str.split('-');
var a = array[0];
var b = array[1];
var c = array[2];
Because for the code that I’m writing at the moment such a method would be a real pain, I’m creating 20 variables from 7 different splits and don’t want to have to use such a verbose method.
Does anyone know of an elegant way to do this?
You can only do it slightly more elegantly by omitting the var keyword for each variable and separating the expressions by commas:
var array = str.split('-'),
a = array[0], b = array[1], c = array[2];
ES6 standardises destructuring assignment, which allows you to do what Firefox has supported for quite a while now:
var [a, b, c] = str.split('-');
You can check browser support using Kangax's compatibility table.