Javascript 无法使用正则表达式删除对象上的下划线映射
我遇到过与此类似的问题,但它们通常涉及如何删除下划线,而我遇到的问题是如何在for循环中删除下划线。当控制台登录到我的函数中时,它将显示我想要更改的字段实际上是更改的,但是当我返回对象时,它只返回一个所有键都有蛇壳的对象。我认为这可能是一个范围问题,但在处理变量的不同位置后,我一直陷入困境。下面是我想更改的原始对象的示例:Javascript 无法使用正则表达式删除对象上的下划线映射,javascript,regex,object,Javascript,Regex,Object,我遇到过与此类似的问题,但它们通常涉及如何删除下划线,而我遇到的问题是如何在for循环中删除下划线。当控制台登录到我的函数中时,它将显示我想要更改的字段实际上是更改的,但是当我返回对象时,它只返回一个所有键都有蛇壳的对象。我认为这可能是一个范围问题,但在处理变量的不同位置后,我一直陷入困境。下面是我想更改的原始对象的示例: const originalObj = { accountNumber: '12345', company: [ { address: {
const originalObj = {
accountNumber: '12345',
company: [
{
address: {
line1: '123',
line2: 'Spring Street'
}
}
],
ownerInfo: [
{
firstName: 'John',
lastName: 'Doe'
enrollment: '2015-10-15'
}
],
tax: {
code: '12345'
}
}
使用npm软件包change case object
我能够成功地将所有带有驼峰壳的密钥更改为蛇壳。但是,我不希望任何具有数值的键包含下划线(如第1行和第2行的情况)。具有此功能
import changeCaseObject from 'change-case-object';
export function restructure(originalObj) {
const regex = /\d/g;
let newObj;
if(typeof originalObj === "object"){
newObj = changeCaseObject.snakeCase(originalObj);
for(const key in newObj){
if(typeof newObj[key] === "object" && newObj[key] !== null){
restructure(newObj[key])
//if the value is an object use recursion
} else {
if(regex.test(key)){
let newKey = key.replace(/_/g, '');
newObj.newKey = newObj.key;
delete newObj.key;
}
}
}
}
return newObj;
}
当我在键与正则表达式匹配的情况下添加控制台日志时,它将显示“line_1”实际上与“line_2”一起更改为“line1”。但是,当返回newObj
时,它只返回所有值现在都有snake-case的对象(如下所示)
我觉得我忽略了一件非常简单的事情,但在if-else语句之外定义
newObj
也没有带来成功。谢谢您的时间。关键是常量,请在此处阅读更多内容:@PoulBak Ah这很有意义,但是我将originalObj更改为let,但仍然会导致相同的错误:/
{
account_number: '12345',
company: [
{
address: {
line_1: '123',
line_2: 'Spring Street'
}
}
],
owner_info: [
{
first_name: 'John',
last_name: 'Doe'
enrollment: '2015-10-15'
}
],
tax: {
code: '12345'
}
}