Проверка заполненности js

Есть конструкция следующего вида:

if (v.a > 1) {
  return 'Значение 1';
} else if (v.a <= 2 && v.b == false) {
  return 'Значение 2';
} else if (v.a <= 2 && v.b == true && v.c <= 3) {
  return 'Значение 3';
} else if (v.a <= 2 && v.b == true && v.c > 3) {
  return 'Значение 4';
} else {
  return 'Входные параметры неверны';
}

Если я заполню только первое поле (переменная a), и оно соответствует первому условию в if, то получу return 'Значение 1'. Как можно корректно реализовать проверку заполненности всех полей, чтобы при пропуске хотя бы одного поля, я получал "Входные параметры неверны"?


Ответы (1 шт):

Автор решения: EzioMercer

Я бы проверял с помощью оператора in

  • Можно проверять по одному вот так:

    const errorMessage = 'Входные параметры неверны';
    
    const checkParams = (v) => {
      if (!('a' in v) || !('b' in v) || !('c' in v)) return errorMessage;
    
      if (v.a > 1) return 'Значение 1';
    
      if (v.b) return 'Значение 2';
    
      if (v.c <= 3) return 'Значение 3';
    
      if (v.c > 3) return 'Значение 4';
      
      return errorMessage;
    }
    
    console.log(checkParams({a: 5, b: 6})); // c not in v
    console.log(checkParams({a: 5, b: 6, c: 7})); // a > 1
    console.log(checkParams({a: 0.5, b: 6, c: 7})); // v.b == true
    console.log(checkParams({a: 0.5, b: false, c: 2})); // v.c <= 3
    console.log(checkParams({a: 0.5, b: false, c: 7})); // v.c > 3

  • А можно записать названия всех нужных полей в массив и пройтись по нему:

    const errorMessage = 'Входные параметры неверны';
    
    const checkParams = (v) => {
      
      const needProps = ['a', 'b', 'c'];
      
      for (const prop of needProps) {
        if (!(prop in v)) return errorMessage;
      }
    
      if (v.a > 1) return 'Значение 1';
    
      if (v.b) return 'Значение 2';
    
      if (v.c <= 3) return 'Значение 3';
    
      if (v.c > 3) return 'Значение 4';
      
      return errorMessage;
    }
    
    console.log(checkParams({a: 5, c: 7})); // b not in v
    console.log(checkParams({a: 5, b: 6, c: 7})); // a > 1
    console.log(checkParams({a: 0.5, b: 6, c: 7})); // v.b == true
    console.log(checkParams({a: 0.5, b: false, c: 2})); // v.c <= 3
    console.log(checkParams({a: 0.5, b: false, c: 7})); // v.c > 3

→ Ссылка