[英]find IP addresses not in array
我有一個名為subRet的數組中的 /24 IP 地址列表
subRet 的值就像 10.0.0.1 10.0.0.2 10.0.0.50 10.0.0.80
我想要的是不在數組中的 IP 地址列表。
我試過的是這樣的:
var test=['10.0.0.1','10.0.0.103','10.0.0.111','10.0.0.131','10.0.0.198'];
for(i=1;i<=254;i++){
if( ! $.inArray('10.0.0.'+i.toString(), test ) ) {
console.log("adding "+'10.0.0.'+i.toString());
}
}
控制台日志說
adding 10.0.0.1
我想要的是一個列表,如果 IP 不在列表中,比如 10.0.0.2。
如何?
首先,您沒有在任何地方聲明變量i
,這是不好的做法,因為范圍可能不是您所期望的。 其次,這里不需要jQuery,你可以使用vanilla ES6。 第三,不需要調用i.toString
因為您已經將它連接到一個字符串,它執行隱式轉換。
var test=['10.0.0.1','10.0.0.103','10.0.0.111','10.0.0.131','10.0.0.198'];
for(let i = 1; i <= 254; i++){
if(!test.includes('10.0.0.' + i)) {
console.log("adding 10.0.0." + i);
}
}
您的代碼的問題在於您檢查方法inArray
的結果的方式,因為inArray
方法檢索數組中測試 IP 的索引,當它找不到任何內容時,它返回 -1。 所以你需要確保返回的索引大於-1:
if( ! $.inArray('10.0.0.'+i.toString(), test ) > -1)
這有效
var test=['10.0.0.1','10.0.0.103','10.0.0.111','10.0.0.131','10.0.0.198'];
for(i=1;i<=254;i++){
if( ! test.includes('10.0.0.'+i.toString()) ) {
console.log("adding "+'10.0.0.'+i.toString());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.