【问题标题】:How should I validate that keys from object 1 present in object 2?我应该如何验证来自对象 1 的密钥存在于对象 2 中?
【发布时间】:2019-04-30 07:03:10
【问题描述】:

我有一个包含所有可能输入值的数组。现在我想根据我拥有的数组验证输入。如果数组中不存在所有输入键,那么它应该抛出错误,如果数组中存在所有输入键,那么它应该打印 OK。我可以接受任何 nodejs 或 python 运行时。请建议我一个更好的方法来做到这一点,因为我不想使用像 foreach 这样的东西来迭代所有元素。提前致谢。

1 -

array = [a,b,c,d];
inputJson = {a:1,z:2}

如果是上述情况,那么它应该打印一些错误

2 -

array = [a,b,c,d];
inputJson = {a:1,b:2}

在这种情况下,它应该打印 OK

【问题讨论】:

标签: javascript node.js json python-3.x validation


【解决方案1】:

在python中使用all

例如:

array = ["a","b","c","d"]
inputJson = {"a":1,"z":2}

if all(k in array for k in inputJson):
    print("Ok..")
else:
    print("Error!")

# --> Error!

array = ["a","b","c","d"]
inputJson = {"a":1,"b":2}

if all(k in array for k in inputJson):
    print("Ok..")
else:
    print("Error!")

# --> Ok..

【讨论】:

    【解决方案2】:

    在 python 中,您可以使用 set.intersection 而不是其他可迭代对象:

    >>> l = ['a','b','c','d']
    >>> inputJson = {'a':1,'b':2}
    >>> set(inputJson.keys()).intersection(l)
    {'a', 'b'}
    >>> set(l).intersection(inputJson.keys())
    {'a', 'b'}
    

    【讨论】:

      【解决方案3】:

      Node.js 中的解决方案。希望对您有所帮助。

      function validate(){
        var array = [a,b,c,d];
        var inputJson = {a:1,z:2}
      
        for(key in inputJson){
          if(array.indexOf(key) === -1){
            return 'ERROR'
          }
        }
        return 'OK'
      }
      

      【讨论】:

        【解决方案4】:

        var array = ['a','b'];
        var inputJson = {a:1,z:2};
        const ok = ! Object.keys(inputJson).find(key => !array.includes(key));

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-22
          • 2010-11-01
          • 1970-01-01
          • 2018-07-04
          相关资源
          最近更新 更多