检查对象中的任何变量是否为null / undefined / empty String('')

问题描述 投票:1回答:4

我想在提交表单之前检查是否有空字段。但问题是我有可变数量的字段(value1,value2 ...)所以我不能使用简单的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

javascript string loops object properties
4个回答
4
投票

您可以获取值并使用布尔值检查每个值。

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

2
投票

您可以使用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;
}

1
投票

您可以在对象值上使用Array#some() method

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)) 

1
投票

您可以通过执行以下操作来创建一个遍历对象属性的函数:

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.
© www.soinside.com 2019 - 2024. All rights reserved.