javascript 对String.matchAll进行结构化将生成一个arrow函数

zd287kbt  于 2023-02-21  发布在  Java
关注(0)|答案(1)|浏览(87)
    • String.matchAll**生成添加了属性(索引、输入和组)的混合数组。

例如

[...'abc'.matchAll(/a|b|c/g)]

产量:

0: ['a', index: 0, input: 'abc', groups: undefined]
1: ['b', index: 1, input: 'abc', groups: undefined]
2: ['c', index: 2, input: 'abc', groups: undefined]
length: 3
[[Prototype]]: Array(0)

有没有办法在www.example.com或Array.filter中的arrow函数中对matchAll结果进行反结构化?Array.map or Array.filter?
一个更一般的问题:当数组的元素和属性都需要时,如何在箭头函数中解构"混合数组"。
虽然我可以在for-of循环中解构matchAll:

for (const {0: m, index, input} of [...'abc'.matchAll(/a|b|c/g)]) {
   console.log(m, index, input)
}

a 0 abc
b 1 abc
c 2 abc
  • -我找不到在. map函数中对其进行解构的方法:
[...'abc'.matchAll(/a|b|c/g)].map({0: m, index, input} => m)
  • -给出未捕获的语法错误:格式错误的箭头函数参数列表错误
    [m,... {索引,输入}]不起作用:
const [m, ...{index, input}] = [...'abc'.matchAll(/a|b|c/g)] [0]
  • -它不捕获索引和输入(未定义),并在. map函数中给出相同的语法错误。
    (值得注意的是,... {length}会破坏一些设置为0的"length"属性,而它应该是1)。
qcbq4gxm

qcbq4gxm1#

缺少括号

console.log(
  [...'abc'.matchAll(/a|b|c/g)].map(({0: m, index, input}) => m)
)

相关问题