Присвоение свойству параметра функции 'a' Eslint - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь отсортировать массив объектов с помощью пользовательской функции.Итак, я определяю свою функцию

   sortingAlgo = (a, b) => {
        // we need to use custom sorting algorithm to meet our requirements.
        a.pos = a.pos.toUpperCase();
        b.pos = b.pos.toUpperCase();
        if(a.pos.slice(0, 1) === b.pos.slice(0, 1)) {
          if (parseInt(a.pos.slice(1)) < parseInt(b.pos.slice(1))){
            return -1;
          }
          if (parseInt(a.pos.slice(1)) > parseInt(b.pos.slice(1))){
            return 1;
          }
          return 0;
        } else {
          if (parseInt(a.pos.slice(0, 1)) < parseInt(b.pos.slice(0, 1))){
            return -1;
          }
          if (parseInt(a.pos.slice(0, 1)) > parseInt(b.pos.slice(0, 1))){
            return 1;
          }
          return 0;

        }
      }

И я называю это так.

const sortedProducts = data.data.sort(this.sortingAlgo);

Теперь я получил сообщение об ошибке Eslint.

**

  • 169: 5 ошибка Присвоение свойству параметра функции 'a' no-param-переназначить
  • 170: 5 ошибка Присвоение свойству функциипараметр 'b' no-param-reassign

**

Я искал и обнаружил, что это правило установлено в airBnB.Так что я не думаю, что это право отключить это правило.Так может кто-нибудь сказать мне, как решить это или если отключение этого правила в порядке.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Ваш ESLint настроен так, чтобы не допускать переназначения параметров, т. Е. Если функция принимает 2 аргумента (a, b), вы НЕ МОЖЕТЕ переназначить эти 2 переменные в теле функции.

Комуисправьте эту ошибку:

  • отключите правило eslint (в вашем .eslintrc или просто для функции)
  • создайте новые переменные, чтобы избежать повторного назначения a и b (см.ниже):
 sortingAlgo = (a, b) => {
        // we need to use custom sorting algorithm to meet our requirements.
        const aPos = a.pos.toUpperCase();
        const bPos = b.pos.toUpperCase();
        ...

Затем заменить ссылки на a.pos и b.pos на aPos и bPos.

0 голосов
/ 24 февраля 2019

Нет необходимости переназначать свойство pos аргументов функции (a, b).Вам следует просто назначить новую переменную (aPos, bPos), что является наилучшей практикой, поэтому ESLint жалуется.

Вам следует избегать ненужных мутаций / побочных эффектов , когда это возможно в вашемкод для предотвращения ошибок и создания общей более эффективной архитектуры программы.

Более конкретно в этом случае ..

ESLint: Запретить переназначение параметров функции (no-param-reassign)

const sortingAlgo = (a, b) => {
    // we need to use custom sorting algorithm to meet our requirements.
    let aPos = a.pos.toUpperCase(),
        bPos = b.pos.toUpperCase();

    if (aPos.slice(0, 1) === bPos.slice(0, 1)) {
        if (parseInt(aPos.slice(1)) < parseInt(bPos.slice(1))) {
            return -1;
        }
        if (parseInt(aPos.slice(1)) > parseInt(bPos.slice(1))) {
            return 1;
        }
        return 0;
    } else {
        if (parseInt(aPos.slice(0, 1)) < parseInt(bPos.slice(0, 1))) {
            return -1;
        }
        if (parseInt(aPos.slice(0, 1)) > parseInt(bPos.slice(0, 1))) {
            return 1;
        }
        return 0;

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