説明: Javascriptに精通するためにいくつかの演習を行っています。質問の1つは、以下の特定のオブジェクトの中で最小の数を見つけるように私に求めます。javacriptでPOSITIVE_INFINITYおよびMAX_VALUEに設定された数値と数値を比較した後、「未定義」が返される
var myObj = { key: [5, 8, 1, 4] };
私はPOSITIVE_INFINITY
とMAX_VALUE
へsmallest
の私の初期値を設定します。 プログラムを実行した後(下記参照)、undefined
が返されました。ただし、smallest
を99999
に設定すると、プログラムが正しく実行されます。
私の質問:POSITIVE_INFINITYおよびMAX_VALUEに変数smallestを設定すると、何が原因で未定義が返されますか?ご協力いただきありがとうございます。
var myObj = { key: [5, 8, 1, 4] };
function getSmallest(obj, key) {
//var smallest = Math.POSITIVE_INFINITY; //---> undefined is returned
//var smallest = Math.MAX_VALUE; //--->undefined is returned
var smallest = 99999; //---> Correct result is returned
if (!obj.hasOwnProperty(key) || !Array.isArray(obj[key]) || obj[key].length === 0) {
return undefined;
}
for (var i in obj[key]) {
if (obj[key][i] < smallest) {
smallest = obj[key][i];
}
}
return smallest;
}
var output = getSmallest(myObj, 'key');
console.log(output);
なし 'MAX_INFINITY' – Bergi
はありませんそれ以外に、その配列の中で最も小さい数字を見つける方法が少し短くなっています:['Math.min.apply(null、obj.key);'](https://jsfiddle.net/bj8tcsax/)。 (ES5バージョン。普及した演算子を使ったES6バージョンはこのコメントのすぐ下にあるBergiの例です)。 – Andy
'Math.min(... obj [key])'を使わない理由は何ですか? – Bergi