gpt4 book ai didi

javascript - 数组中的最小偶数

转载 作者:行者123 更新时间:2023-11-30 13:19:21 25 4
gpt4 key购买 nike

所以,我有这个程序要求数组中的最小偶数,我已经编写了代码,但我似乎错过了一个循环。我会写出正确的代码,但我希望有人能解释为什么会有 while 循环

    <HTML>
<HEAD>
<SCRIPT LANGUAGE = "JavaScript">

var number=new Array(10)

for(var i=0; i<number.length; i=i+1)
{
number[i] =window.prompt('enter number ','')
number[i] =parseFloat(number[i])
}

var y = 0
while (number[y] % 2 != 0) //get the first even number in the array
{
y = y + 1
}
//after you exit the while loop y will have the index of the first even number

var Min
Min = number[y]

for(var i=0; i<number.length; i=i+1)
{
if (number[i] % 2 == 0)
{
if(number[i]<Min)
{
Min= number[i]
}
}
}

document.write(Min)

</SCRIPT>
</HEAD>
</HTML>

所以,这部分

  var y = 0 
while (number[y] % 2 != 0) //get the first even number in the array
{
y = y + 1
}
//after you exit the while loop y will have the index of the first even number

我发现很难真正掌握这个循环,如果我可能会问:是否有另一种方法可以找到数组中的最小值?非常感谢!

最佳答案

while 循环设置 Min 的第一个值以便后续比较工作。这里有远做同样事情的更简单、更快速的方法:

var min = Infinity; // Start with the biggest number possible
for (var i=myArray.length;i--;){
var val = myArray[i];
if (val<min && val%2==0) min = val;
}

这样更快,因为与原始代码不同,它不会对第一个非偶数值进行两次迭代。如果 for 的速度大致相当原始循环开始于索引 y ,即 for (var i=y+1;i<number.length;++i)

它也稍微快一点,因为 for loop缓存了数组的长度,而不是每次都去查找,而且因为每次循环只查找一次数组中的值,而不是三次。然而,像 V8 这样的现代 JavaScript 运行时可以优化原始代码以使其表现相似,所以这不是很重要的一点。


编辑:为了好玩,这里有一个现代的函数式编程方法:

var min = Math.min.apply(Math,myArray.filter(function(n){ return n%2==0 }));

以上使用 Array.filter 创建一个仅包含偶数项的新数组,然后使用 Function.prototype.apply 将值数组作为参数传递给 Math.min .

关于javascript - 数组中的最小偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10840773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com