【问题标题】:How to get smallest difference value from an array in Javascript如何从Javascript中的数组中获取最小的差异值
【发布时间】:2023-03-24 06:55:02
【问题描述】:

我有一个包含多个值的数组。喜欢

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 在那种情况下我想要正数

标签: javascript angularjs logic


【解决方案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

}

如果这不是您想要的,请告诉我,我可以更改答案。

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多