簡體   English   中英

如何檢查對象的鍵上是否有空值?

[英]How can I check if an object has an empty value on a key?

我正在進行表單驗證,我需要檢查何時有空值。

到目前為止,驗證是這樣的:

const areFieldsFilledOut = () => {
    if (
      (size(startupThirdStepForm) === 9 &&
        !has(startupThirdStepForm, 'middleName')) ||
      size(startupThirdStepForm) === 10
    ) {
      stepThreeCardSelectedActionHandler(true);
      return false;
    }
    if (
      has(startupThirdStepForm.middleName) &&
      !startupThirdStepForm.middleName.length
    ) {
      stepThreeCardSelectedActionHandler(true);
      return false;
    }

    return 'disabled';
  };

那個中間名的東西只是不需要的。 該對象最多可以包含15個鍵。 因此,我想要對lodash -hopefully-做的就是這樣的另一項驗證:(偽代碼)

    if (
       startupThirdStepForm has any key with an empty value
    ) {
      stepThreeCardSelectedActionHandler(false);
      return true;
    }

startupThirdStepForm是包含我需要檢查的對象。 它是一個空對象,但鍵/值是動態創建的。

因此,當出現以下情況時,我需要像上面的偽代碼一樣返回true

startupThirdStepForm: { key1: 'I have a value', key2: '' }

當每個鍵都有一個適當的值而不是一個空值時,返回false

如果僅關於自己的屬性,則可以使用Object.values來獲取每個屬性值作為數組,然后使用.some檢查其中是否為空:

if (Object.values(startupThirdStepForm).some(v => v === '')) {

}

您可以使用_.some()迭代對象的屬性,並檢查的值是一個空字符串_.isEqual()

 const optional = ['middle'] const startupThirdStepForm = { key1: 'I have a value', key2: '', middle: '' } const result = _.some(_.omit(startupThirdStepForm, optional), _.partial(_.isEqual, '')) console.log(result) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script> 

和lodash / fp相同的想法:

 const fn = optional => _.flow( _.omit(optional), _.some(_.isEqual('')) ) const optional = ['middle'] const withoutOptional = fn(optional) console.log(withoutOptional({ key1: 'I have a value', key2: '' })) // true console.log(withoutOptional({ key1: 'I have a value', middle: '' })) // false 
 <script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM