我有以下带有多个值的字典,在循环迭代时,我需要验证这些值中的任何一个是否分别等于 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
感谢是否有人可以提供帮助?
谢谢
最佳答案
您在 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 的数组,并对其进行循环以检查结果,而不是静态检查第一个和第二个元素。
关于javascript - 如何根据 node.js 中的每个键验证多值字典中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57638439/