JavaScript 在数组中找到第一个 <= 给定数字的数字

标签 javascript lodash

我有一个质数数组:

const primes = [3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]

我想在此列表中找到 <= 给定数字的第一个数字。

例如 ... getHighestPrimeNumber(58) ... 应该返回 53,这是具有最大值且小于或等于 58 的质数

预期结果:

getHighestPrimeNumber(58) === 53

getHighestPrimeNumber(53) === 53

getHighestPrimeNumber(52) === 47

我目前的方法是遍历素数,但这是非常低效的,特别是考虑到列表中可能有 10,000 多个数字 - 谢谢

Vanilla JS 或 Lodash 都可以

最佳答案

由于您使用 lodash 标签发布了此内容,仅供引用,由于 _.sortedIndex,此内容微不足道 :

const primes = [3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]

const closestPrime = (n) => {
  let index = _.sortedIndex(primes, n)
  return primes[index] == n ? primes[index] : primes[index-1]
}

console.log(closestPrime(58))
console.log(closestPrime(53))
console.log(closestPrime(52))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

关于JavaScript 在数组中找到第一个 <= 给定数字的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53462370/

相关文章:

javascript - Three.js 在鼠标点击的地方绘制,但完全平行于相机方向

JavaScript 模板(例如Underscore/Lodash): informative advice

arrays - 使用 Lodash 深度串联嵌套数组对象值

javascript - 如何正确配置 babel 以使用 lodash-es?

javascript - Lodash集合批量更新

javascript - 每次点击事件期间的 URL 覆盖

javascript - 什么时候使用没有依赖关系的 useEffect 与直接赋值?

javascript - 如果用户关闭浏览器,我会尝试运行 .php 脚本

javascript - 我可以创建一个 promise 来检查变量是否以 Angular 设置?

javascript - 使用 lodash 调用函数数组的简短语法