Javascript 自定义分解模式

Javascript 自定义分解模式,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个以字符串形式表示的时间值'hhmmss',并希望为每小时、每分钟和每秒钟分配一个变量 我试图找到一个解决办法,在那里我可以做一些整洁的事情,比如 let [h, m, s] = '083000'; 目前,我的工作解决方案有点冗长: const str = '083000'; let [h, m, s] = [str.slice(0, 2), str.slice(2, 4), str.slice(4, 6)]; 有没有办法更接近第一个代码段?您可以使用正则表达式将字符串“分块”到两个字

我有一个以字符串形式表示的时间值
'hhmmss'
,并希望为每小时、每分钟和每秒钟分配一个变量

我试图找到一个解决办法,在那里我可以做一些整洁的事情,比如

let [h, m, s] = '083000';
目前,我的工作解决方案有点冗长:

const str = '083000';
let [h, m, s] = [str.slice(0, 2), str.slice(2, 4), str.slice(4, 6)];
有没有办法更接近第一个代码段?

您可以使用正则表达式将字符串“分块”到两个字符串的数组中:

const str = '083000';
let [h, m, s] = str.match(/../g);

根据输入格式的保证程度以及代码的自文档化程度,我个人认为这是最可读的方法:

const str = '083000'
const [, h, m, s] = str.match(/^([0-9]{2})([0-9]{2})([0-9]{2})$/);

这清楚地表明,您正在获取三组2位数字。

不,对阵列进行解构。所以你必须让你的字符串像你做的那样成为一个数组。一个字符串已经是一个数组了,解构已经在字符串上起作用了。我的问题是“一个项目对一个变量”的关联性,请回答+1表示自文档代码,但在我的代码中已经很清楚输入是一组6位数字。同样值得注意的是,即使这对我的用例并不重要,您的正则表达式也比deceze提出的要慢得多。是的,完全公平。Regexp的性能会因引擎的不同而有很大的差异,因为这个代码段不会缓存regex对象,所以您永远不知道这会产生什么影响。