Невозможно удалить отображение подчеркивания над объектом с помощью регулярных выражений - PullRequest
0 голосов
/ 16 февраля 2020

Я столкнулся с вопросами, подобными этому, но они обычно касаются того, как удалить подчеркивание, тогда как у меня есть проблема удаления подчеркивания в для l oop. Когда консоль входит в мою функцию, она показывает, что поля, которые я хочу изменить, на самом деле меняются, но когда я возвращаю объект, он возвращает только тот объект, у которого все ключи имеют случай змеи. Я думаю, что это может быть проблемой, но после того, как я поигрался с различным размещением переменных, я продолжаю застрять. Ниже приведен пример исходного объекта, который я хотел бы изменить:

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 Я могу успешно заменить все ключи с верблюжьим чемоданом на случай змеи. Тем не менее, я не хочу, чтобы какой-либо ключ, имеющий значение цифра c, содержал подчеркивание (как в случаях line1 и line2). С помощью этой функции

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» фактически меняется на «line1» вместе с «line_2». Однако, возвращая newObj, он просто возвращает объект, в котором все значения теперь имеют регистр змеи (как показано ниже)

{
  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'
  }
}

Я чувствую, что есть что-то очень простое, что я выход за пределы, но определение newObj вне оператора if else также не привел к успеху. Спасибо за ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...