Ho una matrice di numeri, ad esempio [300, 500, 700, 1000, 2000, 3000]
e voglio trovare il numero più vicino, senza andare sotto il numero indicato.Javascript trova il numero più vicino nell'array senza passare sotto
Ad esempio, la ricerca di 2200 restituisce 3000 (NON 2000).
Tuttavia, se cerco 3200 perché non c'è niente di più alto nell'array, dovrebbe restituire 3000 in quanto non ci sono altre scelte.
posso ottenere il numero più vicino che si trova sotto il valore con:
if (sizeToUse == null || Math.abs(this - monitorWidth) < Math.abs(sizeToUse - monitorWidth)) {
sizeToUse = this;
}
Tuttavia, non riesco a ottenere il tutto al lavoro. Il mio codice completo è:
$(function() {
var monitorWidth = window.screen.availWidth,
sizeToUse = null,
upscaleImages = false;
$('.responsive-img').each(function(){
var sizeData = $(this).attr('data-available-sizes');
sizeData = sizeData.replace(' ', '');
var sizesAvailable = sizeData.split(',');
sizesAvailable.sort(function(a, b){return b-a});
$.each(sizesAvailable, function(){
if(upscaleImages){
if (sizeToUse == null || Math.abs(this - monitorWidth) < Math.abs(sizeToUse - monitorWidth)) {
sizeToUse = this;
}
}
else{
//We don't want to upscale images so we need to find the next highest image available
}
});
console.log('Size to use ' + sizeToUse + ' monitor width ' + monitorWidth);
});
});
è array ordinato? – dfsq
Potresti rimuovere il 3/4 del codice che non ha nulla a che fare con la domanda? –
Ho ordinato l'array usando: sizesAvailable.sort (function (a, b) {return b-a}); – Amo