Array .min() /.max()
どうあるべきか。
by ethertank
JavaScript
Array.prototype.min || (Array.prototype.min = function() {
return this.length ? Math.min.apply("",this) : undefined;
});
/* check result *//*
[1, 2, 3, 0].min() ====> 0
typeof[1, 2, 3, 0].min() ====> number
[1, 2, 3, +100].min() ====> 1
typeof[1, 2, 3, +100].min() ====> number
["1", "2", "3", "+100"].min() ====> 1
typeof["1", "2", "3", "+1"].min() ====> number
[].min() + ", " + typeof[].min() ====> undefined
typeof[].min() ====> undefined
[[1, 2, 3], [4, 5, 6]].min() ====> NaN
割と自然な結果。多次元配列はNG(対象外としても良いか?)
*/
/*
Array.prototype.min || (Array.prototype.min = function() {
return this.sort(function(a,b){return a < b;}).pop();
});
*/
/* check result *//*
[1, 2, 3, 0].min() ====> 0
typeof[1, 2, 3, 0].min() ====> number
[1, 2, 3, +100].min() ====> 1
typeof[1, 2, 3, +100].min() ====> number
["1", "2", "3", "+100"].min() ====> +100
typeof["1", "2", "3", "+1"].min() ====> string
[].min() + ", " + typeof[].min() ====> undefined
typeof[].min() ====> undefined
[[1, 2, 3], [4, 5, 6]].min() ====> 1,2,3
「+100」 の 「+」記号をsortの評価対象としてる故、他の数値よりこれが小さいとなる。多次元配列も同様にNG
*/
/*
Array.prototype.min || (Array.prototype.min = function() {
if(!this.length) return;
var res = this[0],
i = 0,
l = this.length;
for (; i < l; ++i) {
if (this[i] < res) res = this[i];
}
return res;
});
*/
/* check result *//*
[1, 2, 3, 0].min() ====> 0
typeof[1, 2, 3, 0].min() ====> number
[1, 2, 3, +100].min() ====> 1
typeof[1, 2, 3, +100].min() ====> number
["1", "2", "3", "+100"].min() ====> +100
typeof["1", "2", "3", "+1"].min() ====> string
[].min() + ", " + typeof[].min() ====> undefined
typeof[].min() ====> undefined
[[1, 2, 3], [4, 5, 6]].min() ====> 1,2,3
NG。但しfor文を使用すれば内部で記号付き数文字列、-Infinity 等のチェックが可能
*/
/*
Array.prototype.min || (Array.prototype.min = function() {
//どの様に在るべきか?
});
*/
// checker
var arrayEcho = function(a) {
for (var i = 0, l = a.length; i < l; ++i) {
document.write(a[i] + "<br />");
}
}, s = "...