# 工具函数

# 文档

记录平时使用到的工具函数和工具类

# 数组

# 数组扁平化

Array.flat()(兼容性不好)。

# 对象

# 展开运算符获得有条件的对象属性

let obj = {
  name: 'John',
  surname: 'Doe',
  ...(flag && { email: 'john@doe.com' })
}

# 动态属性名

const dynamic = 'email';
let user = {
    name: 'John',
    [dynamic]: 'john@doe.com'
}

# 正则

匹配 ab 开头,cd 结尾,且中间不能出现 cd

/ab[\w\W]*?cd/

*?, .?, +?表示非贪婪匹配。正常的匹配是匹配尽可能多,然后再回溯,判断是否满足接下来的条件。

例如正则表达式为 /ab[\w\W]*cd/,对于字符串 xxab123456sscd999[\w\W] 表达式会直接匹配到最后,然后再回溯,判断是否满足 cd 条件。而如果正则为 /ab[\w\W]*?cd/[\w\W] 每匹配成功,就会立即匹配接下来的 cd 条件。

loading...