如何从Javascript中的数组中获取最小的差异值
Posted
技术标签:
【中文标题】如何从Javascript中的数组中获取最小的差异值【英文标题】:How to get smallest difference value from an array in Javascript 【发布时间】:2018-02-04 08:36:41 【问题描述】:我有一个包含多个值的数组。喜欢
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
提前致谢
【问题讨论】:
你会如何用纸和铅笔手工完成这项工作? 快速提问,你为什么要在第一个例子中 +1? -1 也可以接受吗? @M.Koval 在那种情况下我想要正数 【参考方案1】:你可以使用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]))
【讨论】:
如果我的问题有任何错误,请您编辑我的问题【参考方案2】:试试这样的:
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
如果这不是您想要的,请告诉我,我可以更改答案。
【讨论】:
以上是关于如何从Javascript中的数组中获取最小的差异值的主要内容,如果未能解决你的问题,请参考以下文章