【问题标题】:How to verify the values from a multi value dictionary against each key in node.js?如何针对node.js中的每个键验证多值字典中的值?
【发布时间】:2019-12-29 11:54:07
【问题描述】:

我有以下具有多个值的字典,并且在遍历循环时,我需要验证其中任何一个值分别等于 url。


console.log("Hello World")


const dns =require('dns')

//Verify the status of the url

function verify_URL(url_list){

    for(url in url_list) {

         dns.lookup(url, function(err, result){

            if (result == url_list[url][0]){

                console.log("Url equal to 1",url, url_list[url][0] );

            }
              else if(result == url_list[url][1]){
                console.log("Url equal to 2", url, url_list[url][1]);


              }
              else {
                  console.log("Url is not accesable and server is down", url)

              }

         })


        }
}

var dic = {'facebook.com':["157.240.25.35","157.240.25.36"],'google.com': ["172.217.160.142","172.217.160.143"]}

verify_URL(dic)




预期: 我需要逐个获取每个url的结果,这里的情况下,可能如下

网址等于 1 facebook.com 157.240.25.35 网址等于 1 google.com 172.217.160.142

实际; 结果我得到以下值

网址等于 1 google.com 172.217.160.142 网址不可访问且服务器已关闭 google.com

是否有人可以提供帮助?

谢谢

【问题讨论】:

  • 您的代码运行良好。有什么问题?它输出ip1, server1,这似乎就是您要查找的内容。
  • 嗨@Alireza,我实际上需要对每个键的url一个一个地获取所有值:[“ip1”,“ip2”]如下,value =“ip1”然后value =“ip2”为关键 url 。同样适用于密钥 url1。如果您能提供帮助,不胜感激?
  • 请填写完整的预期结果以避免误解,我很乐意提供帮助。
  • 嗨@Alireza 正如建议的那样,我已经用完整的代码编辑了上述问题,并提到了我正在寻找的内容。请查看此内容并让我知道是否可以对此提供帮助谢谢
  • 嗨@Alireza你可以给我任何帮助

标签: javascript arrays node.js object


【解决方案1】:

您在for...in 循环中缺少let 关键字。

console.log("Hello World")


const dns =require('dns')

//Verify the status of the url

function verify_URL(url_list){

    for(let url in url_list) {

         dns.lookup(url, function(err, result){

            if (result == url_list[url][0]){

                console.log("Url equal to 1",url, url_list[url][0] );

            }
              else if(result == url_list[url][1]){
                console.log("Url equal to 2", url, url_list[url][1]);


              }
              else {
                  console.log("Url is not accesable and server is down", url)

              }

         })


        }
}

var dic = {'facebook.com':["157.240.25.35","157.240.25.36"],'google.com': ["172.217.160.142","172.217.160.143"]}

verify_URL(dic)

另外,请注意,您当前针对两个 IP 检查返回的 dns 查找的算法在大多数情况下可能会失败,因为 facebook 和 google 有更多的 IP,而且您收到的特定 IP 很可能不在其中您当前的列表。

您可以做的是为每个域创建一个包含更多 IP 的数组,然后循环遍历它以检查结果,而不是静态检查第一个和第二个元素。

【讨论】:

  • 如果您可以投票并接受正确的答案,我们将不胜感激。
【解决方案2】:

解构非常干净和简单:

var [value] = dict[key];
console.log(value);

除非您只需要一个包含每个数组中第一项的数组,在这种情况下您应该这样做:

const firstItems = Object.values(dict).map(([e]) => e);

(虽然它是无序的,因为这就是 JavaScript 对象的工作方式。)

【讨论】:

  • 嗨@Jack,谢谢您的回答,但是,它按预期给出了第一个值,但是如何将第二个值作为“ip2”?我实际上需要针对每个键的 url 逐一获取所有值:["ip1","ip2"] value = "ip1" 然后 value ="ip2" 为键 url 。类似的关键 url1 如果您能提供帮助,不胜感激?
猜你喜欢
  • 1970-01-01
  • 2022-11-26
  • 2011-06-09
  • 2022-01-25
  • 1970-01-01
  • 2021-08-19
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多