2017-08-26 4 views
-6

J'ai un tableau contenant plusieurs valeurs. CommeComment obtenir la plus petite valeur de différence d'un tableau en Javascript

var values = [1.5, -1, 0 , 5, 5.5, -4]; 

Dans ce cas, je veux 0, parce que 0 est la plus petite différence de 0.

var values = [1.5, -1 , 5, 5.5, -4]; 

Dans ce cas, je veux -1, parce que 0 est la plus petite différence de 0.

var values = [1, -1 , 5, 5.5, -4]; 

dans ce cas, je veux +1

Merci à l'avance

+1

Comment voulez-vous faire à la main, avec du papier et un crayon? – Pointy

+0

question rapide, pourquoi voulez-vous +1 dans le premier exemple? Est-ce que -1 serait aussi acceptable? –

+0

@ M.Koval Dans ce cas je veux le nombre positif – byteC0de

Répondre

2

Vous pouvez utiliser réduire pour créer une telle fonction.

function getMin(data) { 
 
    return data.reduce(function(r, e, i) { 
 
    let absR = Math.abs(r), absE = Math.abs(e); 
 
    if (absR > absE || i == 0 || (absR == absE && e > r)) r = e 
 
    return r 
 
    }) 
 
} 
 

 
console.log(getMin([1.5, -1, 0, 5, 5.5, -4])) 
 
console.log(getMin([1.5, -1, 5, 5.5, -4])) 
 
console.log(getMin([1, -1, 5, 5.5, -4])) 
 
console.log(getMin([-1, 1, 5, 5.5, -4]))

+0

S'il y a une erreur dans ma question, pouvez-vous pls éditer ma question – byteC0de

0

Essayez quelque chose comme ceci:

function getMin(arr){ 
    if(arr.length == 0)return undefined; 
    var min = arr[0]; 
    for(var i =0; i < arr.length; i++){ 
     if(Math.abs(arr[i]) < Math.abs(min)){ 
     min = arr[i]; 
     } 
     else if(Math.abs(arr[i]) == Math.abs(min) && arr[i] > 0) 
     min = arr[i] 
    } 

    return min 

} 

Laissez-moi savoir si ce n'est pas ce que vous cherchez et je peux changer ma réponse.