【问题标题】:Filter Object passed on Value Properties在值属性上传递的过滤器对象
【发布时间】:2021-12-16 11:51:08
【问题描述】:

我有一个这样的对象:

let obj = {'machine1':{'err':'404', switch:false},
           'gadget1':{'err':'404', switch:true}}

Would not pass validation. => return false



let obj2 = {'machine2':{'err':'404', switch:false},
           'gadget2':{'err':null, switch:true}}

Would pass validation. => return true

我想在开关设置为 true 的对象中的每个键都没有任何错误时返回 true(请参阅 obj2)。 (对于 machine2,'404' 错误无关紧要,因为开关设置为 false。)

我尝试了类似的方法,但没有走远。

function try() { 
  for (x in obj) {
    obj[x].filter(x=>y.switch === true)
}
}

感谢阅读!

【问题讨论】:

    标签: javascript object


    【解决方案1】:

    您可以执行以下操作:

    const test = obj => Object.keys(obj).every(k => !obj[k].switch || obj[k].err === null)
    

    因此,您检查对象中的 every 键是否将 switch 设置为 false 或 err 是否等于 null。

    【讨论】:

      【解决方案2】:

      您可以通过使用Arrayentriesevery 助手来完成,如下所示:

      let obj = {
        'machine1': {
          'err': '404',
          switch: false
        },
        'gadget1': {
          'err': '404',
          switch: true
        }
      }
      
      let obj2 = {
        'machine2': {
          'err': '404',
          switch: false
        },
        'gadget2': {
          'err': null,
          switch: true
        }
      };
      const validate = (data) => {
        return Object.entries(data).every(([key, value]) => !value.switch || value.err === null)
      }
      
      console.log(validate(obj));
      console.log(validate(obj2));

      【讨论】:

      • 检查语句可以简化为删除value.switch == true &&,特别是如果您使用false 进行松散的相等检查(如果一个值不是假的,那么它必须是真的,除了NaN我认为)。
      • 对,我编辑了我的答案,谢谢。
      【解决方案3】:

      你的意思是这样的吗?

      let obj={
          1:{
              'machine':{'err':'404', switch:false},
              'gadget':{'err':'404', switch:true}
          },
          2:{
              'machine':{'err':'404', switch:false},
              'gadget':{'err':null, switch:true}
          }
      }
      

      我稍微改变了设施以使其更容易。

      var n=1;
      while (n<=2) {
      
      if(obj[n].machine.switch==true){
          if(obj[n].machine.err!='404')
             console.log('SUKCES')
          else console.log('ERROR 1')
      }
      else console.log('ERROR 0')
      
      if(obj[n].gadget.switch==true){
          if(obj[n].gadget.err!='404')
             console.log('SUKCES')
          else console.log('ERROR 1')
      }
      else console.log('ERROR 0')
      n++;
      }
      

      结果:

      错误 0

      错误 1

      错误 0

      苏克塞斯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-10
        • 1970-01-01
        • 2018-04-07
        • 1970-01-01
        • 2021-08-11
        • 2015-05-30
        • 1970-01-01
        • 2015-09-20
        相关资源
        最近更新 更多