2016-09-14 151 views
0

我有一个对象,我需要检查一个属性是否为null,但总是得到undefined。用lodash查找null属性

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/

+1

那么为什么不直接用JavaScript做呢? 'if(obj [“DT_FIM”] === null)' – epascarello

+0

是的,没关系,但为什么我没有定义。谢谢 –

+0

由于'_.find'需要一个谓词函数作为第二个参数,而不是要搜索的键值对,所以你会得到'undefined'。而且,如果用在一个对象上,它将搜索_the values_。 – vlaz

回答

1

对于孔对象包含null ATTR

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

对于某些ATTR

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

你瓦里安

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

将嵌套对象的工作就像

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

对于所有空ATTRS

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

对于第一个空ATTR

_.findKey(obj, _.isNull)