我有一個包含多個值的數組。像如何從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];
在這種情況下,我想提前
謝謝
我有一個包含多個值的數組。像如何從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];
在這種情況下,我想提前
謝謝
您可以使用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]))
如果在我的問題中有任何錯誤,你能否請編輯我的問題 – byteC0de
嘗試是這樣的:
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
}
讓我知道這是不是你在找什麼,我可以改變我的答案。
你會如何做手工此,紙和鉛筆嗎? – Pointy
快問題,你爲什麼要在第一個例子中使用+1? -1會被接受嗎? –
@ M.Koval在那種情況下,我想要正數 – byteC0de