【问题标题】:check for empty property value using lodash使用 lodash 检查空属性值
【发布时间】:2018-01-18 09:15:01
【问题描述】:

我正在尝试使用 lodash 检查以下是否有空值:

data.payload{
      name: ""
}

我的代码:

import isEmpty from 'lodash.isempty';

if (isEmpty(data.payload)) {

以上为假,如何验证空值?

我的助手中有这段代码:

export const isEmpty = some(obj, function(value) {
  return value === '';
}

);

在我的行动中,我有

    if (isEmpty(data.payload)) {

我收到一个错误,ReferenceError: obj is not defined 但我正在传递对象...

【问题讨论】:

标签: reactjs lodash


【解决方案1】:

如果您想使用 isEmpty() 来检查只有 falsey 值的对象,您可以编写一个函数,使用 values()compact() 从对象:

const isEmptyObject = _.flow(_.values, _.compact, _.isEmpty);

isEmptyObject({});
// -> true

isEmptyObject({ name: '' });
// -> true

isEmptyObject({ name: 0 });
// -> true

isEmptyObject({ name: '...' });
// -> false

【讨论】:

    【解决方案2】:
    _.some(obj, function (value) { return value === "" })
    

    你可以使用这个,如果有任何空属性,它会返回true,如果都定义了,它会返回false。

    【讨论】:

    • obj 是你的 data.payload
    • 谢谢,我是新来的反应,我将它作为参数传递? if (isEmpty(data.payload)) { 还是不行
    【解决方案3】:

    你可以像这样使用lodash中的isEmpty()

    if(_.isEmpty(data.payload.name)){
    }
    
    or
    
    
    import isEmpty from 'lodash.isempty';
    
    if (isEmpty(data.payload.name)) {
    }
    

    【讨论】:

      【解决方案4】:

      您可以使用 lodash 中的 someevery 来检查所有键是否已通过条件或一些已通过条件。

      ["barney", 36, "test"].some(_.isEmpty); // false
      ["barney", 36, ""].some(_.isEmpty); // true
      

      ["barney", 36, "test"].every(_.isEmpty); // false
      ["", [], ""].every(_.isEmpty); // true
      

      【讨论】:

        猜你喜欢
        • 2017-01-22
        • 2017-12-11
        • 1970-01-01
        • 2014-05-24
        • 2017-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多