将for循环和while循环转换为do…while循环JavaScript
我使用这两个循环来查找整数数组中的最大数(一个for循环和一个while循环,它们的作用相同) 用于:将for循环和while循环转换为do…while循环JavaScript,javascript,arrays,loops,do-while,Javascript,Arrays,Loops,Do While,我使用这两个循环来查找整数数组中的最大数(一个for循环和一个while循环,它们的作用相同) 用于: var-forHighest=函数(数组){ var最高=数组[0]; 对于(var i=0;i
var-forHighest=函数(数组){
var最高=数组[0];
对于(var i=0;i
而:
var whileHighest = function(array) {
var i = 0;
var highest = array[0];
while (i < array.length) {
if (array[i] > highest)
highest = array[i];
i++;
}
return highest;
};
var whileHighest=函数(数组){
var i=0;
var最高=数组[0];
while(i最高值)
最高=数组[i];
i++;
}
回报最高;
};
但是现在我需要做一个While循环,但是我尝试的每件事都会在数组的[0]索引处给我一个数字。我想我以前从未在功能上使用过do…while循环,所以可能我不完全理解它们是如何工作的。以下是我的一些尝试:
var doWhile = function(array) {
var i = 0;
do {
i++;
} while (i < array.length);
if (array[i] > highest)
highest = array[i];
return highest;
};
var-doWhile=函数(数组){
var i=0;
做{
i++;
}而(i最高值)
最高=数组[i];
回报最高;
};
此外:
var i=0;
var最高=数组[0];
做{
if(最高<数组[i]){
最高=数组[i];
i++;
}
}而(i
以及:
var-doWhile=函数(数组){
变量i=[i];
//var i=0;
var最高=数组[i];
做
{
i++;
}while(array[i]<最高值&&i最高值);
返回数组[i];
但是它们都不起作用。有人能解释一下我做错了什么吗?首先,要了解
do while
循环与while
循环没有太大区别。唯一的区别是do while
是一个退出测试循环,而while
循环是一个进入测试循环
因此,在do while
中,循环条件,即while
括号中的条件,在退出循环时进行评估。为了退出循环,它必须至少进入循环一次。因此,确保do while循环中的代码块至少运行一次。除此之外,whilee
循环的工作原理与do while
相同。相同的初始化代码。在循环内产生退出条件也保持不变
现在看看您的代码,您的while循环(如下所示)运行良好:
while (i < array.length) {
if (array[i] > highest)
highest = array[i];
i++;
}
正如@Jaromanda X在评论中提到的,您应该是黄金:)首先,要了解
do while
循环与while
循环没有太大区别。唯一的区别是do while
是一个退出测试循环,而while
循环是一个进入测试循环
因此,在do while
中,循环条件,即while
括号中的条件,在退出循环时进行评估。为了退出循环,它必须至少进入循环一次。因此,确保do while循环中的代码块至少运行一次。除此之外,whilee
循环的工作原理与do while
相同。相同的初始化代码。在循环内产生退出条件也保持不变
现在看看您的代码,您的while循环(如下所示)运行良好:
while (i < array.length) {
if (array[i] > highest)
highest = array[i];
i++;
}
正如@Jaromanda X在评论中提到的,你应该是黄金:)
如评论中所述,有更好的方法可以获得数组中的最大/最小值,但问题的关键是知道如何编写do…while
循环
你的第二个目标…就在你接近的时候
var i = 0;
var highest = array[0];
do {
if (highest < array[i]){
highest = array[i];
}
i++; // this line moved out of the if block
} while(i < array.length);
var i=0;
var最高=数组[0];
做{
if(最高<数组[i]){
最高=数组[i];
}
i++;//此行移出了if块
}而(i
但是,更准确地说
var i = 1;
var highest = array[0];
if (array.length > 1) {
do {
if(highest < array[i]){
highest = array[i];
}
i++;
} while(i < array.length);
}
var i=1;
var最高=数组[0];
如果(array.length>1){
做{
if(最高<数组[i]){
最高=数组[i];
}
i++;
}而(i
因为不需要检查数组是否是单个元素,也不需要对照数组[0]检查数组[0],所以可以用i=1开始循环
如评论中所述,有更好的方法可以获得数组中的最大/最小值,但问题的关键是知道如何编写do…while
循环
你的第二个目标…就在你接近的时候
var i = 0;
var highest = array[0];
do {
if (highest < array[i]){
highest = array[i];
}
i++; // this line moved out of the if block
} while(i < array.length);
var i=0;
var最高=数组[0];
做{
if(最高<数组[i]){
最高=数组[i];
}
i++;//此行移出了if块
}而(i
但是,更准确地说
var i = 1;
var highest = array[0];
if (array.length > 1) {
do {
if(highest < array[i]){
highest = array[i];
}
i++;
} while(i < array.length);
}
var i=1;
var最高=数组[0];
如果(array.length>1){
做{
if(最高<数组[i]){
最高=数组[i];
}
i++;
}而(i
因为不需要检查数组是否为单个元素,也不需要对照数组[0]检查数组[0],所以可以用i=1开始循环,而您的第一个操作完全没有意义(在循环中除了增量i之外什么都不做)-你的第二个循环将永远循环,因为你需要在if条件之外执行i++操作,你的第三个循环将
i
做成一个数组,因此,根本不起作用…虽然你很接近…但在第二个循环中移动i++操作..而在if条件之外,你应该是golden如果你的目的是找到max和min,那么你可以看看这个@sinto-array没有max/min函数(还没有?@Jaromanda X-sorry关于这个评论:var arr=[10,0,30,40];arr.max=function(){return Math.max.apply(Math,this);};arr.min=function(){return Math.min.apply(Math,this);};alert(“min:+arr.min()+”max:+arr.max());@sinto,无需道歉,arr.min/arr.max代码在user2181397的评论中提供的链接中更为清晰……但是,我认为这个问题并不是关于在完成第一次操作时获得阵列的最小/最大值
var i = 1;
var highest = array[0];
if (array.length > 1) {
do {
if(highest < array[i]){
highest = array[i];
}
i++;
} while(i < array.length);
}