Javascript 在对象数组中找到最接近的数字并检索对象的键值

标签 javascript arrays object max

我有一个对象数组(带有keys:namequoteNumber)我想找到最接近的quoteNumber 小于给定数字然后检索该对象的名称,我考虑过使用 for 循环删除较大的值,并从剩余的值中获取最大值,但它可能不是最好的选择数据集会很大。这是其他更有效的算法吗?谢谢!

const givenNum = 45
var array = [ 

    { name: "Sally",
      quoteNumber: 35},
    { name: "Jane",
      quoteNumber: 20},
    { name: "Edwin",
      quoteNumber: 55},
    { name: "Carrie",
      quoteNumber: 47}];

//'result:' Sally

最佳答案

如果它是未排序的,最有效的可能是单次传递。

function getHighestQuote(quotes, limit) {
  let winner = null;
  let winningQuote = null;
  for (let {name, quoteNumber} of quotes) {
    if (quoteNumber > limit)
      continue;
    if (winningQuote === null || winningQuote < quoteNumber) {
      winner = name;
      winningQuote = quoteNumber;
    }
  }
  return winner;
}

它不像函数式方法那么时髦,但它是一个线性时间传递,只需要分配几个堆栈变量。

关于Javascript 在对象数组中找到最接近的数字并检索对象的键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66551186/

相关文章:

c++ - 如何对动态分配的对象数组中的空对象进行排序,以便空对象位于数组的后面 C++

java - 创建一个可以在不重复的情况下分配团队的程序?

java - 从简单的图形格式文本文件创建对象。 java 。迪杰斯特拉算法

javascript - 上传大约 150 张照片后浏览器崩溃

javascript - 如何在不使用 $$ 的情况下自动渲染 katex?

javascript - Kendo Grid 如何以编程方式聚焦网格单元格并阻止选择文本

javascript - 从 Firefox 插件(Webextension API)修改网页 : how to access the elements properly?

c - 二维字符数组的 malloc 函数的段错误

javascript - for 循环中的 If-else 不起作用 - Javascript

javascript - 在深层嵌套对象中按特定键查找对象 | JavaScript