Vue: рефакторинг вычисляемого свойства - PullRequest
1 голос
/ 06 августа 2020

У меня есть следующее вычисленное свойство, которое работает должным образом. Я хочу, чтобы он возвращал истину, если какое-либо из трех свойств данных является пустыми строками, и хочу, чтобы он возвращал истину, если какая-либо из строк является "н / д":

             appNamesInvalid() {
                if (!this.preferredAppName1 || !this.preferredAppName2 || !this.preferredAppName3) {
                    return true;
                }
                if (this.preferredAppName1.toLowerCase().includes('n/a') || this.preferredAppName2.toLowerCase().includes('n/a') || this.preferredAppName3.toLowerCase().includes('n/a')) {
                    return true;
                }
                return false;
            },

Я изначально пытался сделать это, но это работало не так, как ожидалось, и я не могу сказать, почему:

   appNamesInvalid() {
        let appNames = [this.preferredAppName1, this.preferredAppName2, this.preferredAppName3];
        appNames.forEach(appName => {
            if (appName == "" || appName.toLowerCase().includes("n/a")) { 
               return true;
            }
        }
        return false;
    },

Есть ли более чистый способ рефакторинга рабочего кода в первом блоке?

1 Ответ

3 голосов
/ 06 августа 2020

Попробуйте использовать Array.prototype.some , чтобы вернуть логическое значение на основе ваших критериев c:

appNamesInvalid() {
  let appNames = [this.preferredAppName1, this.preferredAppName2, this.preferredAppName3];
  return appNames.some(appName => {
      return appName === "" || appName.toLowerCase().includes("n/a");
  }
},

Это вернет true, если для любого aoo либо appName === "" или appName.toLowerCase().includes("n/a") верно.

Надеюсь, это поможет!

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