Javascript 将0放置在FOR循环中会返回不需要的结果
我开始学习JavaScript,到目前为止我很喜欢它。 我有这个循环,目的是在数组中定义最大的数:Javascript 将0放置在FOR循环中会返回不需要的结果,javascript,Javascript,我开始学习JavaScript,到目前为止我很喜欢它。 我有这个循环,目的是在数组中定义最大的数: function max(arr) { var max = arr[0]; for (var i = 0; i < arr.length; i++) { if (arr[i] > max) { max = arr[i]; } return max; } } 但它不起作用,除非我把I改成I=1。有人能解释一下原因吗?谢谢 functio
function max(arr) {
var max = arr[0];
for (var i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
return max;
}
}
但它不起作用,除非我把I改成I=1。有人能解释一下原因吗?谢谢
function max(arr) {
var max = 0;
for (var i = 0; i < arr.length; i++) {
if (Math.max(arr[i], max) == arr[i]) {
max = arr[i];
}
}
return max;
}
如果在for循环中生成返回指令,它会将其中断 有必要移动回路。但如果i=1,则永远看不到数组的第一个元素
function max(arr) {
var max;
for (var i = 0; i < arr.length; i++) {
if ((max !== undefined) && (arr[i] > max)) {
max = arr[i];
}
}
return max;
}
如果arr为空,这甚至会返回undefined的可能意外但可以说是正确的值。问题
在您的实现尝试中,您有一个逻辑错误:
function max(arr) {
var max = arr[0];
for (var i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
// return max; <-- this always returns arr[0]
}
return max; // <-- it should be here to work as expected
}
匹配Math.max的ECMAScript规范
对于所有可能的数组输入(空或非空),这在功能上等同于以下实现:
function max(array) {
return Math.max.apply(Math, array)
}
从:
如果没有给出参数,结果是-无穷大
如果至少有一个参数无法转换为数字,则结果为NaN
演示
函数myMaxarray{
var max=-无穷大
对于var index=0,值;index}你的回报最大;在for循环内-它应该在它之外可能最大的数字在位置1,并且由于循环在第一次迭代时终止,它会意外地返回正确的值。关于返回,请更正,但索引是错误的。事实上,我不太确定我取消了我的否决票,但我认为这个Outsill不起作用,它返回数组的第一个值,就像以前一样如果我发布它,那是因为我尝试了它,它起作用了:显示你的array@Superdrac如果所有arr值均为负值,则会给出错误答案。谢谢!它确实奏效了。出于某种原因,我的电脑表现得非常怪异,必须创建一个新文件并将其链接到html,才能正常工作,不知道为什么。坦克再返回-空阵列无限大。我认为这是不正确的,因为数组是空的,而不是带有-Infinity元素的数组。@manassehkatz,正如我所说的,这是设计的,并且遵循JavaScript规范,因为这是Math.max的行为-但这是OP想要的吗?诚然,当我看到Math.max可用时,我只会选择Math.max。谢谢你提供的信息性评论!“我会调查的。”帕特里克·罗伯茨和OP毕竟更喜欢你的答案。
function max(array) {
return Math.max.apply(Math, array)
}