2016-10-21 7 views
-3

あなたは番号のリストを持っていると言う:正の数と負の数のリストが与えられます。何がゼロに最も近いかを知る上品な解決策は何ですか?

var list = [4, -12, 18, 1, -3]; 

のif/else文の全体の多くを入れ子にすることなく、ゼロに近い値を見つけるための、よりエレガントな解決策は何ですか?

+6

エレガント?まずソリューションから始めましょう。これまでに何を試しましたか? –

+1

'Math.abs'関数を実行し、通常の方法を使用して最も低い数値を探します。 –

+0

ネクタイがあればどうなりますか? – j08691

答えて

-2
  1. 昇順

    Array.sort() 
    

    内の数字は、最初の数が必要な答えです。すべての数字

    Math.abs() 
    
  2. 一種の絶対値を取得します

+0

これは必ずしも元の値を返すわけではありません(例えば、-1が最も近く、1を返します) – roger

0

使用ソート:

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

使用が削減:

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

これは、あなたが配列の1つの横断で何ができるかです。

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));

関連する問題