【问题标题】:Lodash , check if object exists and property exists and is trueLodash ,检查对象是否存在且属性是否存在且为真
【发布时间】:2017-12-19 10:43:52
【问题描述】:

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

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

然后检查required:true

提前致谢

【问题讨论】:

  • _.filter(validations, function(o) { return o.required; }) ?

标签: javascript arrays object lodash


【解决方案1】:

简单的使用怎么样

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

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

您可以以更编程的方式使用此_.get,并使用默认值(如果路径不存在)和keysarray 以正确的顺序进行查找。因此,您可以动态传递键数组来获取值,并且您不需要为. 加入的字符串创建一个字符串,例如"EMPRESA.required"(如果您输入的N 深度查找路径不是@ 987654329@)

这是一个例子:

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>

【讨论】:

    【解决方案2】:

    我猜就是这样。

    if (validations["EMPRESA"] && validations["EMPRESA"].required) {
      console.log(true)
    } else {
      console.log(false)
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-05
      • 2017-03-01
      • 2017-12-11
      • 2011-04-23
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      相关资源
      最近更新 更多