从字符串中找到最接近0的数字?

时间:2016-09-28 06:28:40

标签: javascript

我希望字符串输入中最接近0的数字由以''分隔的数字组成。我已经按照以下方式编写了它,它已经在第一行temps变量上工作但在第二行temps变量中没有正确运行。这里缺少什么?

<script type="text/javascript">

//var temps = "9 -2 -8 4 5"; // get 2 & correct
var temps = "-12 -5 -137";   // get -12 & not correct ,expected 5
var temp = temps.split(" ");
var closest = parseInt(temp[0]);
for(var i = 0;i < temp.length ;i++){
    var t = Math.abs(temp[i]);   
    console.log(typeof closest) ; //number : same type
    if(closest > t) {
        closest = t;
    }
}
console.log(closest);
</script>

3 个答案:

答案 0 :(得分:1)

您正在

中存储-12
  

最接近的变量

在比较你这样做时

-12>5

这是假的,所以你的作业

closest =t;

未执行。它适用于第一个输入,因为存储了9作为最接近的变量。您可以做的是将绝对值存储为此步骤中最接近的变量。

var closest = parseInt(Math.abs(temp[0]));

答案 1 :(得分:1)

只需更改行

即可
var closest = parseInt(temp[0]);

通过

var closest = Math.abs(parseInt(temp[0]));

你错过了第一个索引的绝对值。

答案 2 :(得分:0)

您可以拥有自定义排序功能,然后选择1值

function getClosestToZero(str) {
  return str.split(" ").sort(function(a, b) {
    var a1 = Math.abs(a);
    var b1 = Math.abs(b);
    return a1 > b1 ? 1 : a1 < b1 ? -1 : 0
  })[0];
}

var temps = "-12 -5 -137 0 2";
console.log(getClosestToZero(temps))

temps = "11 2 4 5 9 10";
console.log(getClosestToZero(temps))

temps = "-11 -2 -9 3 23";
console.log(getClosestToZero(temps))