Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将for循环和while循环转换为do…while循环JavaScript_Javascript_Arrays_Loops_Do While - Fatal编程技术网

将for循环和while循环转换为do…while循环JavaScript

将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

我使用这两个循环来查找整数数组中的最大数(一个for循环和一个while循环,它们的作用相同) 用于:

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);
}