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

标签 javascript string destructuring

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

my ($a, $b, $c) = split '-', $str;

在 Firefox 中我可以编写

var [a, b, c] = str.split('-');

但此语法不是 ECMAScript 第五版的一部分,因此在所有其他浏览器中都会中断。我想做的是避免编写:

var array = str.split('-');
var a = array[0];
var b = array[1];
var c = array[2];

因为对于我目前正在编写的代码来说,这种方法会非常痛苦,所以我从 7 个不同的分割创建 20 个变量,并且不想使用如此冗长的方法。

有人知道一种优雅的方法吗?

最佳答案

您只能通过省略每个变量的 var 关键字并用逗号分隔表达式来稍微优雅地做到这一点:

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

ES6 标准化了解构赋值,这使您可以执行 Firefox 长期以来支持的操作:

var [a, b, c] = str.split('-');

您可以使用 Kangax 的 compatibility table 检查浏览器支持情况.

关于javascript - 将字符串直接拆分为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3522406/

相关文章:

javascript - 有人可以向我解释这个 react native 代码片段吗?

javascript - 为什么我不能在单独的 html 和 js 文件中使用全局变量?

python - 删除字符串中第 4 个句点后的所有内容

c++ - 为什么 cout 一个简单的 char* 不起作用?

c - 从字符串中删除尾部空格 (char*)

node.js - TypeError:无法解构 `db` 或 'undefined' 的属性 'null'

javascript - 解构对象并忽略其中一个结果

javascript - 工厂返回返回函数,而不是函数的产物

javascript - 为什么在调用 ExtJS Grid Store Load 时执行了太多请求?

javascript - 从关联数组/对象中提取的全局变量?