gpt4 book ai didi

JavaScript 数组 while 循环。比较结果: arr[len] vs arr[len-1]

转载 作者:行者123 更新时间:2023-12-03 00:49:10 33 4
gpt4 key购买 nike

大家好!

我从这个网站找到了这段很棒的代码:

var points = [30,100];
document.getElementById("demo").innerHTML = myArrayMax(points);

function myArrayMax(arr) {
var len = arr.length;
var max = -Infinity;
while (len--) {
if (arr[len] > max) {
max = arr[len];
}
}
return max;
}

来源:Find the min/max element of an Array in JavaScript

它确实工作得非常好而且非常快。我有一个问题(出于好​​奇)。当我尝试添加(或操作)某些内容时,结果与第一个代码不匹配。这是代码:

var points = [30,100];
document.getElementById("demo").innerHTML = myArrayMax(points);

function myArrayMax(arr) {
var len = arr.length;
var max = -Infinity;
while (len--) {
if (arr[len-1] > max) {
max = arr[len-1];
}
}
return max;
}

我假设array[0]是第一个数组元素,并且我使用了后递减函数,但我没有得到预期的结果。

最佳答案

首先,使用arr[len-1]增加了一个新问题:索引越界。当循环迭代循环中的最后一个元素(len-- 之后的 len == 0)并且您最终寻找 arr[-1] 时,就会发生这种情况 不存在。另外,您不再检查数组中的最后一个索引 (arr[arr.length - 1]),因为 len-- 已经从索引中减去。就像这样:

var points = [30,100];
document.getElementById("demo").innerHTML = myArrayMax(points);

function myArrayMax(arr) {
var len = arr.length; // len == 2
var max = -Infinity;
while (len--) { // len == 1
// checking for arr[len - 1] the first time
// results in checking for arr[0]. arr[1] will be skipped
if (arr[len-1] > max) {
max = arr[len-1];
}
}
return max;
}

该功能首先运行良好,所以...为什么要修复未损坏的内容?

查看arithmetic operators有关 len-- 的更多信息。

关于JavaScript 数组 while 循环。比较结果: arr[len] vs arr[len-1],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53121901/

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