【问题标题】:Can I declare 2 variables from an array in JavaScript? [duplicate]我可以在 JavaScript 中从数组中声明 2 个变量吗? [复制]
【发布时间】:2015-04-18 02:17:58
【问题描述】:

我目前在我的代码中有这个:

var user = this.value.split("@")[0];
var domain = this.value.split("@")[1];

我希望能够做这样的事情:

var user, domain = this.value.split("@");

(当然这会创建一个空变量“user”,并将“domain”分配给 .split() 返回的数组)


我设法在 PHP 中这样做:

list($user, $domain) = explode('@', $_POST['user']);

想知道是否有 JavaScript 等价物?

【问题讨论】:

标签: javascript php arrays variables variable-assignment


【解决方案1】:

ES6 将添加destructuring assignments,它可以让你完成几乎你所写的:

// Will be valid in ES6
var [user, domain] = this.value.split("@");

...但是您今天(在大多数引擎中)无法做到这一点。相反,您需要一个中间变量:

var parts = this.value.split("@");
var user = parts[0];
var domain = parts[1];

...或者像你一样复制split

这是一个在最新版本的 Firefox 中工作的实时示例,它已经具有解构分配:

// Requires that destructuring assignments work on your browser;
// recent Firefox has them
var value = "coolness@example.com";
var [user, domain] = value.split("@");
snippet.log("user = " + user);
snippet.log("domain = " + domain);
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

【讨论】:

  • 我猜一个临时变量可能快了几分之一毫秒,因为 split() 只运行一次。
  • @TRGWII:没错。或者(再次)重复split,就像你做的那样,如果你不需要那一小部分毫秒。
猜你喜欢
  • 2015-12-15
  • 2022-01-09
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多