Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

从匹配结果中解构

  以前我们在从一坨结构化的数据中取某些东西时候经常需要写一坨代码。各种字符串处理最后把需要的结果筛选出来放入变量中。正则匹配的结果是一个数组,如果使用 ES6 的解构,直接从一个正则匹配的结果中将所需的数据取出到变量就可以节省很多代码。
  比如现在需要从 Cookie 中分别取出 a 和 b 的值,最原始的做法是去 split,然后遍历。这个做法太麻烦,我一直不爱用。
  然后就是用正则分别匹配,比如
let a = document.cookie.match(/.*(?:^| )a=([^;]*)|$/)[1]; let b = document.cookie.match(/.*(?:^| )b=([^;]*)|$/)[1];   这个方法是我目前用得最多的。
  最后就是把两个正则合并,用 ES6 的解构处理。
let [ , a, b ] = document.cookie.match(/^(?=.*(?:^| )a=([^;]*))(?=.*(?:^| )b=([^;]*))|$/);   代码可以写成一行,但问题是这个代码中必须同时存在 a 和 b,否则两个都取不到。
  这里用 Cookie 来举例实在是不太恰当,因为 Cookie 是无序的,还是比较适合单独取。对于有序的结构,这种用法会方便的多,有时候确实存在一些奇怪的字符串结构非常适合用这种方法。这里只是做个科普,并不是推荐,也许以后会在业务代码中遇到这种用法。
网名:
52.91.185.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^