我想知道标准JS是否提供了一种在初始声明时将字符串直接拆分成一组变量的方法。例如,在Perl中,我会使用:
my ($a, $b, $c) = split '-', $str;
在Firefox中,我可以编写
var [a, b, c] = str.split('-');
但这种语法不是ECMAScript第5版的一部分,因此在所有其他浏览器中都会中断。我想要做的是避免不得不写:
var array = str.split('-');
var a = array[0];
var b = array[1];
var c = array[2];
因为对于我目前正在编写的代码来说,这样的方法将是一个真正的痛苦,我从7个不同的拆分中创建了20个变量,并且不想使用这样一个冗长的方法。
有没有人知道一种优雅的方法来做到这一点?
发布于 2010-08-19 22:09:20
var str = '123',
array = str.split('');
(function(a, b, c) {
a; // 1
b; // 2
c; // 3
}).apply(null, array)
发布于 2019-02-19 16:49:49
对于3个或更多单词的句子,将字符串拆分为两个部分的变量。
> var [firstName, lastName] = 'Ravindra Kumar Padhi'.split(/(\w+)$/)
> console.log({firstName: firstName.trim(), lastName: lastName.trim()})
{ firstName: 'Ravindra Kumar', lastName: 'Padhi' }
发布于 2010-08-19 22:11:14
您可以创建一个函数,该函数将遍历由str.split方法创建的数组,并以这种方式自动生成变量:
function autoGenerateVarFromArray(srcArray, varNamePrefix)
{
var i = 0
while(i < srcArray.length)
{
this[varNamePrefix +'_' + i] = srcArray[i];
i++;
}
}
下面是一个如何使用它的示例:
var someString = "Mary had a little Lamb";
autoGenerateVarFromArray(someString.split(' '), 'temp');
alert(this.temp_3); // little
https://stackoverflow.com/questions/3522406
复制相似问题