javascript:直接将字符串拆分为变量

nb5*_*nb5 27 javascript string

我想知道标准JS是否提供了一种在初始声明期间将字符串直接拆分为一组变量的方法.例如在perl中我会使用:

my ($a, $b, $c) = split '-', $str;
Run Code Online (Sandbox Code Playgroud)

在Firefox中,我可以写

var [a, b, c] = str.split('-');
Run Code Online (Sandbox Code Playgroud)

但是这种语法不是ECMA标准的一部分,因此在所有其他浏览器中都会出现这种情况.我要做的是避免写:

var array = str.split('-');
var a = array[0];
var b = array[1];
var c = array[2];
Run Code Online (Sandbox Code Playgroud)

因为对于我正在编写的代码,这样的方法将是一个真正的痛苦,我正在从7个不同的分裂中创建20个变量,并且不希望必须使用这样的详细方法.

有谁知道这样做的优雅方式?

And*_*y E 53

您只能通过省略每个变量的var关键字并用逗号分隔表达式来稍微优雅地执行此操作:

var array = str.split('-'),
    a = array[0], b = array[1], c = array[2];
Run Code Online (Sandbox Code Playgroud)

ES6标准化了解构分配,这使您可以在很长一段时间内完成Firefox支持的工作:

var [a, b, c] = str.split('-');
Run Code Online (Sandbox Code Playgroud)

您可以使用Kangax的兼容性表检查浏览器支持.

  • 我也这么怀疑。似乎必须如此冗长,真是太可惜了。很好,谢谢您的帮助:) (2认同)

Tör*_*bor 8

var str = '123',
    array = str.split('');

(function(a, b, c) {
    a; // 1
    b; // 2
    c; // 3
}).apply(null, array)
Run Code Online (Sandbox Code Playgroud)


abh*_*ekp 6

将字符串拆分为 3 个或更多单词的句子的两个部分变量。

> var [firstName, lastName] = 'Ravindra Kumar Padhi'.split(/(\w+)$/)

> console.log({firstName: firstName.trim(), lastName: lastName.trim()})
{ firstName: 'Ravindra Kumar', lastName: 'Padhi' }
Run Code Online (Sandbox Code Playgroud)