Кто-нибудь знает лучший способ оптимизации моего кода? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть объект activeRow, который имеет параметры prevValue и editedValue

Я использую companyDataKeys в качестве ключей по умолчанию.Поэтому мне нужно нажать на массив logDetailsArray объект logDetails, если prevValue[key] !== editedValue[key]

Также я нажимаю logDetails, если prevValue или editedValue равен undefined, что означает, что он не имеет значенияили не существует

const prevValues = this.state.activeRow.prevValue
const editedValues = this.state.activeRow.editedValue

Object.keys(this.state.companyDataKeys).forEach((key) => {
  if (prevValues === undefined) {
    logDetails = {
      param: companyDataValue[key],
      prevValue: '',
      editedValue: (editedValues[key] === undefined) ? '' : editedValues[key].toString(),
    }
    logDetailsArray.push(logDetails)
  }
  if (editedValues === undefined) {
    logDetails = {
      param: companyDataValue[key],
      prevValue: (prevValues[key] === undefined) ? '' : prevValues[key].toString(),
      editedValue: '',
    }
    logDetailsArray.push(logDetails)
  }
  if (editedValues !== undefined && prevValues !== undefined) {
    if (prevValues.hasOwnProperty(key) && editedValues.hasOwnProperty(key)) {
      if (editedValues[key] !== prevValues[key]) {
        logDetails = {
          param: companyDataValue[key],
          prevValue: prevValues[key].toString(),
          editedValue: editedValues[key].toString(),
        }
        logDetailsArray.push(logDetails)
      }
    } else if (prevValues[key] !== undefined && editedValues[key] !== undefined) {
      logDetails = {
        param: companyDataValue[key],
        prevValue: (prevValues[key] !== undefined) ? prevValues[key].toString() : '',
        editedValue: (editedValues[key] !== undefined) ? editedValues[key].toString() : '',
      }
      logDetailsArray.push(logDetails)
    }
  }
});

1 Ответ

1 голос
/ 29 марта 2019

Я думаю, это то, что вы хотите!

Используя javascript truey-falsey поведение и OR логику, мы сокращаем ваш длинный код до этого более простого!

const prevValues = this.state.activeRow.prevValue || {};
const editedValues = this.state.activeRow.editedValue || {};

Object.keys(this.state.companyDataKeys).forEach((key) => {
    logDetails = {
        param: companyDataValue[key],
        prevValue: (prevValues[key] || '').toString(),
        editedValue: (editedValues[key] || '').toString(),
    };
    logDetailsArray.push(logDetails);
});

Надеюсь, это поможет вам. Спасибо!

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