首页 > 解决方案 > 从排序数组中获取数字范围

问题描述

有一个带有数字的排序数组,例如:

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
})

总是输掉最后一个号码。

标签: javascriptmath

解决方案


这是for...of循环的完美用例。

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]

它很简单,遵循传统的编程范式,并且只遍历数组一次。


推荐阅读