найти IP-адреса не в массиве - PullRequest
0 голосов
/ 17 января 2020

У меня есть список / 24 IP-адресов в массиве с именем subRet

Значения 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.

как?

Ответы [ 3 ]

2 голосов
/ 17 января 2020

Во-первых, вы нигде не объявляете переменную 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);
   }
}     
0 голосов
/ 17 января 2020

Проблема вашего кода заключается в том, что вы проверяете результат метода inArray, поскольку метод inArray извлекает индекс проверенного IP-адреса в массиве и, когда ничего не находит, возвращает -1. Поэтому вам нужно убедиться, что возвращаемый индекс выше -1:

 if( ! $.inArray('10.0.0.'+i.toString(), test ) > -1)

Подробнее о inArray

0 голосов
/ 17 января 2020

это сработало

    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());
            }
  }     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...