有一个字符串数组(数据库中的字段,它们带有下划线)。该对象具有完全相同的一组字段,但有一个细微差别 - 而不是 orthodox_lower_underline,而是一种类似粥的 CamelCase。任务是遍历数组,并从中收集对象对应值的数组。
想这样做:
const params = [
'field_one',
'field_two',
'justfield',
'field_three',
'longer_than_one_field'
];
const data = {
fieldOne:1,
fieldTwo:2,
justfield:'d',
fieldThree:3,
longer_than_one_field:'____'
}
params.map(key => data[key.replace(/_(.)/g, '$1')]);
但我不知道如何更改寄存器 $1。
在匹配中,第一个字符是下划线,第二个字符是组 #1 中捕获的任何字符。
在
RegExp#replace()你可以传递一个回调方法作为替换参数。请参阅将函数作为第二个参数传递:因此,可以传递前 2 个参数:匹配的全文和第一组的值,并仅显示第一组的更改值。
这
$0是匹配的全文,$1是第一组的值。该表达式
/_([a-z])/将只查找_后跟小写 ASCII 字母的那些。谷歌已经证明 replace 可以将回调作为它的第二个参数: