【问题标题】:Find null attribute with lodash使用 lodash 查找空属性
【发布时间】:2017-01-22 20:02:36
【问题描述】:

我有一个对象,我需要检查一个属性是否为空,但总是未定义。

 var obj={
  "EMPRESA": "CMIP",
  "CD_DIRECAO": "01",
  "DT_INI_DIRECAO": "1900-01-01",
  "CD_DEPT": "10",
  "DT_INI_DEPT": "1900-01-01",
  "CD_PROC": "1",
  "DT_INI_PROC": "1900-01-01",
  "DSP_PROC": "Processo 1",
  "DSR_PROC": "Processo 1",
  "DESCRICAO": null,
  "ID_PROCESSO_ARTIGO": null,
  "VALIDACAO_ARTIGO": null,
  "DT_FIM": null,
  "DT_RowId": "row_CMIP011900-01-01101900-01-0111900-01-01",
  "DESIGEMPRESA": "CMIP",
  "DSP_DIRECAO": "Disponivel",
  "DSP_DEPT": "ADM - Administracao"
};
console.log(_.find(obj,{'DT_FIM':null}));

我已经设置了一个小提琴https://jsfiddle.net/0a6yf34b/1/

【问题讨论】:

  • 那么为什么不直接使用 JavaScript 呢? if (obj["DT_FIM"]===null)
  • 是的,没关系,但为什么我没有定义。谢谢
  • 您会得到undefined,因为_.find 需要一个谓词函数作为第二个参数,而不是要搜索的键值对。此外,如果在对象上使用,它将搜索
  • 不。这不是真的
  • 什么,_.find 需要一个谓词?因为the documentation似乎和我的说法一致。

标签: javascript object properties attributes lodash


【解决方案1】:

对于洞对象包含空属性

_.chain(obj).values().includes(null).value();

对于某些属性

_.isNull(obj['DT_FIM']);

你的变种

_.find(obj,{'DT_FIM':null})

适用于嵌套对象,如

var obj={
    ...
    "DT_FIM": {"DT_FIM":null},
    ...
};

对于所有空属性

_.reduce(obj, function(res, val, key) {
    if (_.isNull(val)) {
        res.push(key);
    };    
    return res;
}, [])

对于第一个空属性

_.findKey(obj, _.isNull)

【讨论】:

    猜你喜欢
    • 2018-01-18
    • 1970-01-01
    • 2018-01-03
    • 2015-02-27
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    相关资源
    最近更新 更多