在JavaScript中查找数组中的最大整数

10 浏览
0 Comments

在JavaScript中查找数组中的最大整数

我在尝试让这段代码正常运行时遇到了问题。我已经花了一些时间来弄清楚问题所在。当我查看控制台时,它只显示0。我做错了什么?

这是我的代码:

var array = [3 , 6, 2, 56, 32, 5, 89, 32];

var largest= 0;

for (i=0; i<=largest;i++){

if (array>largest) {

var largest=array[i];

}

}

console.log(largest);

0
0 Comments

找到JavaScript数组中的最大整数

在JavaScript中找到数组中的最大整数是一种常见的需求。这篇文章将介绍出现这个问题的原因以及解决方法。

在给定的代码示例中,我们可以看到有几种不同的方法来找到数组中的最大整数。最初的方法使用了sort函数和reverse函数。这种方法首先将数组按升序排序,然后反转数组,最后获取第一个元素作为最大整数。这种方法看起来很简洁,但是当将数字作为字符串进行排序时,可能会出现错误。

为了解决这个问题,我们可以使用更好的方法。第二种方法也使用了sort函数,但是不使用reverse函数。它首先将数组按升序排序,然后获取最后一个元素作为最大整数。这种方法避免了将数字作为字符串进行排序的问题。

然而,根据性能方面的考虑,推荐使用forEach循环。在评论中提到,forEach循环的性能更好。为了验证这一点,我们可以参考jsperf.com/array-sorting-javascript-stack的测试结果。

除了上述方法,还有一种更高效的方法是使用reduce函数。这个方法使用了一个回调函数来比较数组中的元素,找到最大的整数。你可以在jsperf.com/array-sorting-javascript-stack/4上进行测试。

总结起来,找到JavaScript数组中的最大整数是一个常见的问题。我们可以使用sort函数、reverse函数、forEach循环或reduce函数来解决这个问题。尽管性能方面的考虑可能会影响选择哪种方法,但根据测试结果,reduce函数是最高效的方法。

0
0 Comments

问题的出现原因:

1. 在if语句中重新声明了largest变量,而实际上largest已经在数组开头的声明中声明过了。

2. 当数组的第一个元素为0或负数时,该方法会失败。

3. 当数组以两个1或三个2等等开头时,该方法也会失败。

4. for循环中的条件应该是i小于等于数组的长度,而不是i小于largest。

解决方法:

1. 不要在if语句中重新声明largest变量。

2. 使用更高效的方法来找到数组中的最大整数。

3. 修改for循环的条件为i小于等于数组的长度。

4. 注意处理数组开头为0或负数,以及开头有多个相同数字的情况。

以下是修正后的代码:

var array = [3, 6, 2, 56, 32, 5, 89, 32];
var largest = array[0];
for (let i=1; i <= array.length; i++) {
    if (array[i] > largest) {
        largest = array[i];
    }
}
console.log(largest);

这样修正后的代码可以正确地找到数组中的最大整数。

0
0 Comments

找到JavaScript数组中最大的整数

问题的出现原因:

1. 没有定义变量i,导致它成为全局变量。

2. 在循环中重新定义了largest。

3. 循环应该使用i < array.length而不是i <= largest。

4. 由于要将数组中的每个项与largest进行比较,应该使用if(largest < array[i])而不是if(array > largest)。

5. 应该将largest设置为数组中的第一个元素,因为如果所有数字都是负数会怎样?

6. array是一个糟糕的变量名,因为它太类似于Array(数组构造函数)。可以尝试使用arr代替。

解决方法:

可以使用以下代码来找到数组中的最大整数:

var arr = [3, 6, 2, 56, 32, 5, 89, 32];
var largest = arr[0];
for (var i = 0; i < arr.length; i++) {
  if (largest < arr[i] ) {
    largest = arr[i];
  }
}
console.log(largest);

此外,还可以使用一行代码来找到数组中的最大整数:

var largest = Math.max.apply(0, array);

但是需要注意的是,对于非常大的数组,Math.max可能无法处理。在测试中,Math.max能够处理的最大数组长度为123679个元素。这可能因JavaScript平台的不同而有所变化,但它说明了Math.max几乎与直接迭代一样快,但不够快并且无法处理非常大的数组。

以上是一位用户在Stack Overflow上提出的问题,并得到了其他用户的回答和讨论。问题的原因是代码中存在一些错误和不规范的写法,解决方法是修正这些问题并提供更好的实现方式。

0