Suren97 Ответов: 1

Javascript: как проверить, находятся ли числа массива в диапазоне


У меня есть функция validRange(x,y,z), она получает массив и 2 числа, Если числа массива находятся в диапазоне этих 2 чисел, то она возвращает true, если массив содержит число, которое не находится в диапазоне, то функция возвращает false. Например` validRange([11,1,15,13,14], 10, 20); это вернет false, потому что 1 не находится в диапазоне,
validRange([11,15,13,14], 10, 20) и это вернет true.

Что я уже пробовал:

Я пробовал, но почему это не работает?

function validRange(x, y, z) {
	for(var i = 0; i < x.length; i++){
		if(x[i] > y && x[i] < z){
			return true;
		}
		else{
			return false;
		}
	}
}


console.log(validRange([11,1,15,13,14], 10, 20)); //in this case it returns true, but it must return false

1 Ответов

Рейтинг:
10

Jochen Arndt

Ваш код проверяет только первое значение массива и возвращает его немедленно. Немедленно вернуть только в случае, если условие не выполняется и возвращает значение true, наконец, вне цикла:

function validRange(x, y, z) {
    for(var i = 0; i < x.length; i++){
        if(x[i] < y || x[i] > z){
            // Value is outside the range
            return false;
        }
    }
    // All values are inside the range
    return true;
}
Обратите также внимание, что я изменил условие, чтобы оно находилось вне диапазона таким образом, чтобы значения, идентичные одному из пределов, рассматривались как допустимые (обычно с диапазонами включаются пределы). Если этого не должно быть, измените значение сравнения на <= и >=.


Suren97

Большое спасибо