2017-08-26 82 views
-6

我有一個包含多個值的數組。像如何從Javascript中的數組中獲得最小差異值

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

在這種情況下,我想0,因爲0是從0

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

最小差異在這種情況下,我想-1,因爲0是0差異最小。

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

在這種情況下,我想提前

謝謝

+1

你會如何做手工此,紙和鉛筆嗎? – Pointy

+0

快問題,你爲什麼要在第一個例子中使用+1? -1會被接受嗎? –

+0

@ M.Koval在那種情況下,我想要正數 – byteC0de

回答

2

您可以使用reduce創建此類功能。

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

如果在我的問題中有任何錯誤,你能否請編輯我的問題 – byteC0de

0

嘗試是這樣的:

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 

} 

讓我知道這是不是你在找什麼,我可以改變我的答案。