javascript - 从索引为 1 或更高的返回数组中分配元素

标签 javascript return multiple-return-values

给定一个函数,它返回一个包含 (n) 个元素的数组。 我想分配这些返回值,但不是第一个。

// match returns ["abc123","abc","123"] here  
[ foo, bar ] = "abc123".match(/([a-z]*)([0-9]*)/);

现在我有

foo = "abc123"
bar = "abc"

但我的本意是

foo = "abc"
bar = "123"

在其他语言中你可以做类似的事情

//pseudocode  
[_,foo,bar] = "abc123".match(/([a-z]*)([0-9]*)/);

要归档这个,但是在JS中是怎么做的呢?

当然可以

[garbage,foo,bar] = "abc123".match(/([a-z]*)([0-9]*)/);
garbage = undefined;

..但是,..呃..

最佳答案

我假设您使用的是 ES6(ECMAScript 2015,JavaScript 的最新版本)。如果是这样,你的伪代码真的很接近,你甚至不需要在第一个位置使用变量名,你可以完全不使用它:

[ , foo, bar] = "abc123".match(/([a-z]*)([0-9]*)/);

注意前导逗号。它将索引 1 的值存储在 foo 中,将索引 2 的值存储在 bar 中。

Live Example在 Babel 的 REPL 上

您可以在左侧序列中的任何一点执行此操作。例如,假设您希望 foo 是 0 的值,bar 是 2 的值:

// Different from what the question asks, an example
// of grabbing index 0 and index 2
[foo, , bar] = "abc123".match(/([a-z]*)([0-9]*)/);

因为我们没有在左边的第二个位置放置任何东西,所以在解构赋值过程中它被跳过了。

关于javascript - 从索引为 1 或更高的返回数组中分配元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32623466/

相关文章:

javascript - 如何在vuejs中导入node_modules的所有css

python - 返回与正则表达式匹配的字符串

c - for循环中的return语句

javascript - 谷歌地图API错误: "initMap is not a function"

javascript - 如何从指令链接方法中调用 js 插件 - Angularjs

javascript - 按键验证后如何在 HTML 页面中显示结果?

bash - 回车不会删除之前的值

lua - 如何在一个表达式中比较具有多个返回值的两个函数的结果?

c++ - 有没有什么东西限制 future 的 C++ 标准引入多个返回值?