给出正数和负数的列表。什么是优雅的解决方案,告诉哪个最接近零?

时间:2016-10-21 17:05:23

标签: javascript

假设您有一个数字列表:

cursor.execute(SELECT)
for row in cursor:
    print(row)

在不嵌套大量if / else语句的情况下,找到最接近零的值的更优雅的解决方案是什么?

4 个答案:

答案 0 :(得分:4)

使用reduce:

list.reduce((pre,cur) => Math.abs(pre) > Math.abs(cur) ? cur : pre)

答案 1 :(得分:0)

使用sort:

list.sort((a,b) => Math.abs(a)-Math.abs(b))[0];

答案 2 :(得分:0)

这是你可以通过单次遍历数组来完成的。



function findClosestToZero(arr) {
  if (arr.length === 0) {
    return;
  }

  var closeNumber = Math.abs(arr[0]);

  arr.forEach(function(number) {
    if (Math.abs(number) < closeNumber) {
      closeNumber = Math.abs(number)
    }
  });
  return closeNumber;
}


var arr = [-5, 98, -4, 7, 9, 213, 4, -2, 1];
console.log(findClosestToZero(arr));
&#13;
&#13;
&#13;

答案 3 :(得分:-2)

  1. 获取所有数字的绝对值

    Math.abs()
    
  2. 按升序对数字进行排序

    Array.sort()
    

    第一个数字是必填答案。