вопрос из задачника JS

нужно написать функцию которое делает проверку на числа,все числа должны быть в диапазоне от 0-255, есть 4 варианта для которых код должен быть верным:

на входе:127.0.0.0 , на выходе: true

на входе:214.2.6.0 , на выходе: true

на входе: … , на выходе: false

на входе:127. , на выходе:false

и собственно код которым я пытался решить задачу։

function solution(x){

x = x.split('.')

for(let i=0;i<x.length;i++){

if(x[i]>=0&& x[i]<=255){

return true
}else if(x[i]==isNaN){

return false
}
}
}

не получается написать код правильно для всех вариантов, особенно для 3,4 вариантов


Ответы (5 шт):

Автор решения: Alexander Lonberg

const hosts = [
  '127.0.0.0',
  '214.2.6.0',
  '256.2.6.0',
  '000'
]

function solution(h){
  let spl = h.split('.')
  return (
    spl.length === 4 &&
    spl.every((v) => /^[0-9]{1,3}$/.test(v) && Number.parseInt(v) < 256)
    )
}
hosts.forEach((h) => {
  console.log(solution(h))
})

→ Ссылка
Автор решения: Kosta B.

нужно написать функцию которое делает проверку на числа,все числа должны быть в диапазоне от 0-255, есть 4 варианта для которых код должен быть верным:

Вот такой вариант, может работать так как вам нужно.

function solution(y) {

  var x = y.split('.')

  for (let i = 0; i < x.length; i++) {
    if (x[i] == isNaN(x) || x[i] == '') {
      return false
    } 
  }
  return true
}
console.log(solution('127.0.0.0')) // , на выходе: true

console.log(solution('214.2.6.0')) // , на выходе: true

console.log(solution('...')) //, на выходе: false

console.log(solution('127.')) ///, на выходе:false

→ Ссылка
Автор решения: Denis640Kb

    function solution(x){
        x = x.split('.');
        let z = 0;
        for(let i=0;i<x.length;i++){
            if(x[i]>=0&& x[i]<=255){
                z += 1;
            }
        }
        if (z == 4){
            return true
        } else {
            return false
        }
    }
    console.log(solution('127.0.0.0'));
    console.log(solution('214.2.6.0'));
    console.log(solution('…'));
    console.log(solution('127. '));

→ Ссылка
Автор решения: MaxWall
const ipSet = [
  '127.0.0.0',
  '214.2.6.0',
  '..r.',
  '127.',
  '999.0.0.0',
  '',
  '...',
  'Ooo.Eee.!.00',
]

Алгоритм проверки с быстрым выходом если строка IP не полная, также быстрый выход по первой же невалидной цифре:

function ipIsValid(row) {
  const ipArr = row.split(".");
  if (ipArr.length !== 4) return false;
  return !ipArr.some(item => isNaN(parseInt(item)) || +item < 0 || +item > 255);
}

Проверка:

ipSet.forEach( ipRow => console.log(ipIsValid(ipRow), ipRow) );

Результат:

true 127.0.0.0
true 214.2.6.0
false ..r.
false 127.
false 999.0.0.0
false
false ...
false Ooo.Eee.!.00
→ Ссылка
Автор решения: Vahan Muradyan

function solution(x) {
    x = x.split('.');
    return x.every(index => index >= 0 && index <= 255 && index !== '')
}
console.log(solution('127.0.0.0'));
console.log(solution('214.2.6.0'));
console.log(solution('…'));
console.log(solution('127.'));

→ Ссылка