Проверка наличия любой переменной в объекте null / undefined / emptyString ('') - PullRequest
0 голосов
/ 12 сентября 2018

Я хочу проверить, есть ли пустое поле или нет перед отправкой формы. Но проблема в том, что у меня есть переменное количество полей (значение1, значение2 ...), поэтому я не могу использовать простой оператор if.

Так есть ли способ архивировать это.

state1 = {
                vale1:'',
                vale2:'',
                vale3:'',
                vale4:''
            }

state2 = {
                vale1:'21',
                vale2:'a',
                vale3:'f',
                vale4:''
            }
state3 = {
                vale1:'fdf',
                vale2:'fgf',
                vale3:'gf',
                vale4:'hg'
            }

state4 = {
                vale1:'21',
                vale2:'a',
                vale3:'f'
            }
  functionIWant(state1) ----> false 
  functionIWant(state2) ----> false
  functionIWant(state3) ----> true
  functionIWant(state4) ----> true

Есть ли functionIWant?

Ответы [ 4 ]

0 голосов
/ 12 сентября 2018

Вы можете создать функцию, которая просматривает свойства объекта, выполнив:

state1 = {
  a: '',
  b: 'f',
  c: ''
}

state2 = {
  a: 'd',
  b: 'f',
  c: 'g'
}

function isValid(state) {
  return Object.values(state).every(val => val != '');
}

console.log(isValid(state1));
console.log(isValid(state2));

Object.values ​​// возвращает все значения объекта в массиве.

every // you apply the predicator in all values.
0 голосов
/ 12 сентября 2018

Вы можете использовать Array#some() метод над значениями объекта:

function functionIWant(obj) {
  return !Object.values(obj).some(v => !v || v == '');
}

Демонстрация:

function functionIWant(obj) {
  return !Object.values(obj).some(v => !v || v == '');
}

const state1 = {
  vale1: '',
  vale2: '',
  vale3: '',
  vale4: ''
}

state2 = {
  vale1: '21',
  vale2: 'a',
  vale3: 'f',
  vale4: ''
}
state3 = {
  vale1: 'fdf',
  vale2: 'fgf',
  vale3: 'gf',
  vale4: 'hg'
}

state4 = {
  vale1: '21',
  vale2: 'a',
  vale3: 'f'
}
console.log(functionIWant(state1)) 
console.log(functionIWant(state2)) 
console.log(functionIWant(state3)) 
console.log(functionIWant(state4)) 
0 голосов
/ 12 сентября 2018

Вы можете использовать версию javascript foreach и проверить, имеют ли какие-либо пары значений ключа пустые или нулевые значения:

functionIWant(state){
    //boolean to return from function, initialize to true
    let notEmpty = true;
    //Iterate the state object passed in and use javascript's version of `foreach`
    //to check if any of the key value pairs have an empty or null value
    for (let key in state){ 
        if(state[key] === null || state[key] === ''){
             notEmpty = false;
             break;
        }
    }

    return notEmpty;
}
0 голосов
/ 12 сентября 2018

Вы можете получить значения и проверить каждое с помощью логического значения.

function check(object) {
    return Object.values(object).every(Boolean);
}

var state1 = { vale1: '', vale2: '', vale3: '', vale4: '' },
    state2 = { vale1: '21', vale2: 'a', vale3: 'f', vale4: '' },
    state3 = { vale1: 'fdf', vale2: 'fgf', vale3: 'gf', vale4: 'hg' },
    state4 = { vale1: '21', vale2: 'a', vale3: 'f' };

console.log(check(state1)); // false
console.log(check(state2)); // false
console.log(check(state3)); //  true
console.log(check(state4)); //  true
...