Javascript 如何根据node.js中的每个键验证多值字典中的值?

Javascript 如何根据node.js中的每个键验证多值字典中的值?,javascript,arrays,node.js,object,Javascript,Arrays,Node.js,Object,我有以下具有多个值的字典,在循环中迭代时,我需要验证这些值中的任何一个分别等于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){

我有以下具有多个值的字典,在循环中迭代时,我需要验证这些值中的任何一个分别等于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的结果,在本例中,可以如下所示

Url等于1 facebook.com 157.240.25.35 Url等于1 google.com 172.217.160.142

实际的; 在结果中,我得到以下值

Url等于1 google.com 172.217.160.142 Url不可访问,服务器已关闭google.com

如果有人能在这方面提供帮助,我将不胜感激


谢谢你

解构非常简洁:

var [value] = dict[key];
console.log(value);
除非您只需要每个数组中第一项的数组,否则在这种情况下,您需要执行以下操作:

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

(不过它是无序的,因为JavaScript对象就是这样工作的。)

解构非常简洁:

var [value] = dict[key];
console.log(value);
除非您只需要每个数组中第一项的数组,否则在这种情况下,您需要执行以下操作:

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

(但它将是无序的,因为JavaScript对象就是这样工作的。)

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

console.log(“你好世界”)
const dns=require('dns')
//验证url的状态
函数验证URL(URL列表){
for(在url_列表中设置url){
查找(url、函数(错误、结果){
如果(结果==url\U列表[url][0]){
log(“Url等于1”,Url,Url_列表[Url][0]);
}
else if(result==url\u list[url][1]){
log(“Url等于2”,Url,Url_列表[Url][1]);
}
否则{
log(“Url不可访问,服务器已关闭”,Url)
}
})
}
}
var dic={'facebook.com':[“157.240.25.35”,“157.240.25.36”],'google.com':[“172.217.160.142”,“172.217.160.143”]
验证URL(dic)
此外,请注意,您当前针对两个IP检查返回的dns查找的算法在大多数情况下可能会失败,因为facebook和google有更多的IP,并且您收到的特定IP不在当前列表中的可能性很高


您可以做的是为每个域创建一个包含多个IP的数组,并在其上循环检查结果,而不是静态检查第一个和第二个元素。

您的
for…in
循环中缺少
let
关键字

console.log(“你好世界”)
const dns=require('dns')
//验证url的状态
函数验证URL(URL列表){
for(在url_列表中设置url){
查找(url、函数(错误、结果){
如果(结果==url\U列表[url][0]){
log(“Url等于1”,Url,Url_列表[Url][0]);
}
else if(result==url\u list[url][1]){
log(“Url等于2”,Url,Url_列表[Url][1]);
}
否则{
log(“Url不可访问,服务器已关闭”,Url)
}
})
}
}
var dic={'facebook.com':[“157.240.25.35”,“157.240.25.36”],'google.com':[“172.217.160.142”,“172.217.160.143”]
验证URL(dic)
此外,请注意,您当前针对两个IP检查返回的dns查找的算法在大多数情况下可能会失败,因为facebook和google有更多的IP,并且您收到的特定IP不在当前列表中的可能性很高


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

您的代码工作正常。有什么问题吗?它输出
ip1,server1
,这似乎就是您要寻找的。嗨@Alireza,我实际上需要针对每个键的url逐个获取所有值:[“ip1”,“ip2”],如下所示,value=“ip1”然后value=“ip2”作为键url。对于键url1也是如此。如果您能提供帮助,我将不胜感激。请以完整的形式添加预期结果,以避免误解,我很乐意提供帮助。您好@Alireza正如建议的那样,我已经用完整的代码编辑了上述问题,并提到了我要找的内容。请查看此内容,并让我知道是否可以在这方面提供帮助谢谢hi@Alireza您可以在这方面给我任何帮助您的代码运行良好。有什么问题吗?它输出
ip1,server1
,这似乎就是您要寻找的。嗨@Alireza,我实际上需要针对每个键的url逐个获取所有值:[“ip1”,“ip2”],如下所示,value=“ip1”然后value=“ip2”作为键url。对于键url1也是如此。如果您能提供帮助,我将不胜感激。请以完整的形式添加预期结果,以避免误解,我很乐意提供帮助。您好@Alireza正如建议的那样,我已经用完整的代码编辑了上述问题,并提到了我要找的内容。请查看此内容,并让我知道您是否可以在这方面提供帮助。谢谢您在这方面提供的任何帮助。谢谢您的回答。不过,它给出了预期的第一个值,但是如何获得第二个值作为“ip2”?实际上,我需要针对每个键的url逐个获取所有值:[“ip1”、“ip2”]value=“ip1”然后value=“ip2”作为键url。对于关键url1,如果您能提供帮助,我们将不胜感激?嗨@Jack,谢谢您的回答,不过,它给出了预期的第一个值,但是如何将第二个值作为“ip2”?实际上,我需要针对每个键的url逐个获取所有值:[“ip1”、“ip2”]value=“ip1”然后value=“ip2”作为键url。对于关键url1,如果您能提供帮助,我将不胜感激。如果您能投票并接受正确的答案,我将不胜感激。如果您能投票并接受正确的答案,我将不胜感激。