Lodash,检查对象是否存在且属性是否存在且是否为真

时间:2017-12-19 10:43:52

标签: javascript arrays object lodash

早上好。我需要帮助检查对象是否存在,某些属性的值是否为true。例如:

validations={
  "DSP_INDICADOR": {
    "required": true
  },
  "EMPRESA": {
    "required": true
  },
.....
  "NOME_AVAL": {
    "required": false,
    "notEqualToField": "NOME"
  }
}

然后检查required:true

提前致谢

2 个答案:

答案 0 :(得分:5)

如何简单地使用

lodash中的

_.get(validations, "EMPRESA.required");

通过这种方式,我们可以获取任何深度,并且我们不需要一次又一次地确保连续&&,直接父级别首先存在于每个子级别。

您可以以更具编程性的方式使用此_.get,并使用默认值(如果路径不存在)和array keys的正确序列进行查找。因此,动态地您可以传递一组键来获取值,而不需要像.那样为"EMPRESA.required"加入的字符串创建一个字符串(在N深度输入的情况下查找路径不是string

以下是一个例子:

let obj = {a1: {a2: {a3: {a4: {a5: {value: 101}}}}}};

let path1 = ['a1', 'a2', 'a3', 'a4', 'a5', 'value'], //valid
    path2 = ['a1', 'a2', 'a3', 'a4'], //valid
    path3 = ['a1', 'a3', 'a2', 'x', 'y', 'z']; //invalid
    
console.log(`Lookup for ${path1.join('->')}: `, _.get(obj, path1));
console.log(`Lookup for ${path2.join('->')}: `, _.get(obj, path2));
console.log(`Lookup for ${path3.join('->')}: `, _.get(obj, path3));
console.log(`Lookup for ${path3.join('->')} with default Value: `, _.get(obj, path3, 404));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

答案 1 :(得分:1)

我想这就是它。

addListenerForSingleValueEvent