Как я могу проверить, сколько чисел в массиве находится в пределах или вне интервала 10-20 (включая 10 и 20) в одной функции? Я пытался, но я только что получил его с двумя функциями: одна, чтобы проверить, не вышла ли она, и одна, чтобы проверить, входит ли она.
let array = [1,3,7,10,14,18,20,23,27]
function inInterval(e){
if (e >= 10 && e <=20) {
return e
}
}
function outInterval(e) {
if (e <10 || e>20) {
return e
}
}
let inIntervalResult = array.filter(inInterval).length
let outIntervalResult = array.filter(outInterval).length
console.info(inIntervalResult, outIntervalResult)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это на самом деле должно быть хорошо!
Вы также можете сделать
let outIntervalResult = e.length - inIntervalResult
Если вы не хотите иметь две функции или фильтровать дважды.
Вам просто нужно найти количество элементов в диапазоне и вычесть это из общего количества элементов, чтобы получить количество элементов вне диапазона.
Независимо от логики, которую вы используете для подсчета количества элементов внутри или вне диапазона, вы можете вернуть объект (или просто массив) с обоими счетчиками внутри.
var array = [1,3,7,10,14,18,20,23,27]
function countInOutRange(arr, min, max) {
let inRange = arr.filter(e => e >= min && e <= max).length
// Or use a simple for/forEach loop to count
let outRange = arr.length - inRange
return {inRange, outRange} // or [inRange, outRange]
}
console.info(countInOutRange(array, 10, 20))
countall = (arr) => {
countin=0
countout=0
arr.forEach(x => (x<20 && x>10)?countin++:countout++)
return {'in':countin,'out':countout}
}
console.info(countall([1,3,5,7,12,15,17,11,20]))
это проверено, работает кстати
let array = [1,3,7,10,14,18,20,23,27]
let [outIntervalResult, inIntervalResult] =
array.reduce((r,e)=>(r[+(e >= 10 && e <=20)]++, r), [0,0])
console.info(inIntervalResult, outIntervalResult)Обратите внимание, что + приводит значение true/false к 1/0 и таким образом лаконично выбирает индекс результата для увеличения.
лучший ответ. чистое, лаконичное и мощное использование синтаксиса javascript
Вы можете просто добиться этого с помощью одного метода Array.forEach().
Живая демонстрация:
let arr = [1, 3, 7, 10, 14, 18, 20, 23, 27];
const minVal = 10;
const maxVal = 20;
let inArr = [];
let outArr = [];
arr.forEach(val => {
(val >= minVal && val <= maxVal) ? outArr.push(val) : inArr.push(val)
})
console.info(inArr, inArr.length);
console.info(outArr, outArr.length);
Убедитесь, что вы правильно объявили
elв этом цикле с помощьюconstилиlet.