簡體   English   中英

查找不在數組中的 IP 地址

[英]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)

閱讀有關 inArray 的更多信息

這有效

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM