efg*_*gdh 2 javascript arrays object max
我有一个对象数组(带有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
Run Code Online (Sandbox Code Playgroud)
如果它是未排序的,那么最有效的方法就是单次传递。
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;
}
Run Code Online (Sandbox Code Playgroud)
它不像函数式方法那么时髦,但它是一个线性时间传递,只需要分配几个堆栈变量。