как получить элемент, который равен или больше X, но меньше следующего X в массиве?

#javascript

Вопрос:

Итак, я хочу получить число, которое больше X в массиве, но меньше Y?
пример У меня есть такой массив:
["5","10","25",etc]
тогда значение равно 5,
поэтому я хочу, чтобы всякий раз, когда мое значение 5 или больше 5, но меньше 10 в массиве, оно возвращало только 5. например, если значение 6/7/8/9, оно вернет 5

(Примечание: Число в массиве всегда будет разным, это зависит от того, что пользователь установил в бд)

Я пробовал, givenNum >= nextNum но он возвращается с цифрами 10 и 25.

есть какое-нибудь решение?

Комментарии:

1. пожалуйста, добавьте свою попытку и желаемый результат. кстати, почему струны?

2. Итак, вы хотите, чтобы в вашем примере элемент(ы) был больше 5, но меньше 10?

3. @Нина Шольц какие строки?

4. @Mostafa Elkaramany нет, я имею в виду, что если данное число больше 5 или равно, оно даст 5, но меньше следующего числа

5. у вас есть строки в качестве значений.

Ответ №1:

Ты мог бы это сделать :

 var array = ["5","10","15","20","25"];
Math.max(...array.filter(nb => nb <= 9))//5
Math.max(...array.filter(nb => nb <= 10))//10
 

Во-первых, вы фильтруете массив, чтобы сохранить числа, которые меньше или равны заданному значению.
Затем вы используете Math.max() отфильтрованный массив.

Ответ №2:

Я пробовал использовать givenNum >= nextNum, но он возвращается с цифрами 10 и 25.

Вы сравниваете строки вместо чисел, сравнение строк работает в алфавитном порядке, так как «1» стоит перед «5» в алфавитном порядке, «10» стоит перед «5», поэтому «10»

Вам нужно преобразовать ваши строки в числа с помощью функции Number (), а затем сравнить.

Комментарии:

1. Я не сравнивал строку, данное число равно 5, и следующее число тоже равно 5, я имею в виду, что если пользователь даст 5 до 9, он вернет 5, потому что оно меньше 10 и больше/равно 5