javascript - 从排序数组中获取数字范围
问题描述
有一个带有数字的排序数组,例如:
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
})
总是输掉最后一个号码。
解决方案
这是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]
它很简单,遵循传统的编程范式,并且只遍历数组一次。
推荐阅读
- ansible - win_ping 返回值并存储在变量中
- javascript - 有没有办法使用 document.GetElementsByClassName() 在 HTML 中填充文本模板
- javascript - 如何将弹簧实体列表发送到javascript页面
- mysql - 如何避免事务中的 MySQL 死锁
- javascript - 在没有 getCurrentPosition() 的情况下以编程方式通过模式提示用户进行地理定位
- flutter - 即使按下鼠标按钮,也可以在 Flutter 中跟踪鼠标移动
- reactjs - SearchBar 在作为 props 以及来自它的父级的 setter 时不会更新值
- git - 我尝试使用 git 将代码 git 到 github repo 但它不起作用
- java - 为什么这里的 parseInt 会在索引 i=4 处的 for 循环内导致 NumberFormatException
- c# - 是否可以在实体框架中忽略相关实体的加载?