var ids = new Array(150000).fill(0).map((_, i) => i + 1)
var array = []
for (let i = 0; i < 50000; i++)
array.push({name: `Sally${i}`, quoteNumber: ids.splice(Math.floor(Math.random() * (ids.length - 1)), 1)[0] });
function foo_forLoop(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;
}
function Foo_reduceFind2(array, givenNum) {
return array.reduce((pv, cv) => cv.quoteNumber <= givenNum && cv.quoteNumber > (pv?.quoteNumber ?? 0) ? cv : pv, null)
}
function foo_forLoop2(quotes, limit) {
let found = null;
for(let i = 0; i < quotes.length; i++) {
if (quotes[i].quoteNumber > limit)
continue;
if (found === null || found.quoteNumber < quotes[i].quoteNumber)
found = quotes[i];
}
return found;
}
function foo_forLoop4(quotes, limit) {
let winner = null;
let winningQuote = null;
for(let i = 0; i < quotes.length; i++) {
if (quotes[i].quoteNumber > limit)
continue;
if (winningQuote === null || winningQuote < quotes[i].quoteNumber) {
winner = quotes[i].name;
winningQuote = quotes[i].quoteNumber;
}
}
return winner ;
}
function foo_forLoop6(quotes, limit) {
let winner = null;
let winningQuote = 0;
const limit_plus_one = limit + 1;
for(let i = 0; i < quotes.length; i++) {
const quoteNumber = quotes[i].quoteNumber;
if(((quoteNumber < limit_plus_one) * quoteNumber) > winningQuote) {
winningQuote = quoteNumber ;
winner = quotes[i].name;
}
}
return winner;
}