我想只显示最小数字,而是显示最小数字和无穷大为什么我会得到无穷大?我该如何摆脱它?
var repeat, studentArr = [], markArr = [];
while (repeat !== 'n' && repeat !== 'N'){
studentArr.push(prompt("Enter Student Name: "));
markArr.push(parseInt (prompt("Enter Student mark: ")));
repeat = prompt ("Do you want to enter another student: y/n");
}
var largest = max(markArr);
Array.prototype.max = function() {
return Math.max.apply(Math, markArr);
};
Array.prototype.min = function() {
return Math.min.apply(Math, markArr);
};
var min = Math.min.apply(Math, markArr),
max = Math.max.apply(Math, markArr);
document.write(min);
答案 0 :(得分:3)
Array.prototype.max = function() {
return Math.max.apply(Math, markArr);
};
Array.prototype.min = function() {
return Math.min.apply(Math, markArr);
};
这些不是好的原型定义;他们被绑在一个物体上!让他们改为使用this
。
Array.prototype.max = function() {
return Math.max.apply(Math, this);
};
Array.prototype.min = function() {
return Math.min.apply(Math, this);
};
除此之外,max
在您调用它以获取latest
(它应该是undefined
)时不是函数,并且您没有使用这些函数,无论是。我很惊讶你可以得到Infinity。
var min = markArr.min();
var max = markArr.max();
document.write(min);
或者我们可以停止使用原型; this fiddle works fine for me
答案 1 :(得分:0)
您需要传递数组本身。如果在数组上调用该方法,则方法中的 this 将是数组,因此:
Array.prototype.max = function() {
return Math.max.apply(Math, this);
};
对其他方法也这样做。
请注意,扩展 Array.prototype 会影响 for..in 枚举数组,以便过滤掉 hasOwnProperty 测试原型上的可枚举属性。
答案 2 :(得分:0)
Infinity
使用非整数时,也可以引发 Math.max
问题。
然后,最好在致电map
之前致电max
:
urArray.map(function(e){return parseInt(e);/*or parseFloat()*/}).max()