Получить диапазон чисел из отсортированного массива - PullRequest
0 голосов
/ 21 апреля 2020

Существует отсортированный массив с числами, например:

const array = [100, 400, 700, 1000, 1300, 1600]

Есть функция, которая принимает два аргумента в качестве ввода:

function foobar(min, max) {}

Функция должна возвращать числа из массив, начиная с первого значения от >= до min и заканчивая последним значением от >= до max.

foobar(250, 1010) // returns [400, 700, 1000, 1300]
foobar(0, 15) // returns [100]

Как реализовать это с помощью современного JS?


array.filter((num) => {
  return num >= min && num <= max
})

Всегда теряет последний номер. ?

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

Это идеальный вариант использования for...of l oop.

const array = [100, 400, 700, 1000, 1300, 1600];

function foobar(array,min,max) {
    let new_array = [];
    for (let val of array) {
        if(min<=val && val<=max) {
            new_array.push(val);
        } else if(val>max) {
            new_array.push(val);
            break;
        }

    }
    return new_array;
}

console.log(foobar(array,0,15));     // outputs [100]
console.log(foobar(array,250,1010)); // outputs [400, 700, 1000, 1300]

Все просто, следует обычной парадигме программирования и пересекает массив только один раз.

1 голос
/ 21 апреля 2020

Вот один из способов

const array = [100, 400, 700, 1000, 1300, 1600];

const foobar = (min, max) => {

    // get the lowest number higher than or equal to max
    const lowestHigh = array.find(n => (n >= max));
    
    const within = val => (val >= min && val <= lowestHigh);
    return array.filter(within);
};

console.log( foobar(0, 150) );
console.log( foobar(400, 1500) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...