我有一个对象数组(带有keys
:name
,quoteNumber
)我想找到最接近的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/