javascript - 如何正确地遍历数组并使用作用域

标签 javascript arrays scope

我试图将 arrayOne 的索引除以 arrayTwo 的索引号。为了便于阅读,我根据原始代码编写了这个非常简洁的模型。

尝试使用不同的语法重写代码,但无法修复它。

let arrayOne = [ 2,7,5,89,4,67,8,5,3,8];
let arrayTwo = [ 5,87,5,3,7,89,5,34,7,98];
for( i = 0; i < arrayOne.length; i++){
    let arrayCombi = [arrayOne[i] / arrayTwo[i]];
    console.log(arrayCombi); 
    let topScore = 0;
    for( a = 0; a < arrayOne.length; a++){
        if (arrayCombi[a] > topScore){
            topScore = arrayCombi[a];
            console.log("Top Score; " + topScore);
        }
    }
}

出于某种原因,JS 似乎忽略了 If 语句,并将每个 arrayCombi 索引打印为 topScore,而不是仅在 arrayCombi[a] 大于 topScore 时更新 topScore。我认为我错误地使用了迭代器。 如果可能的话,如果我能够从稍后使用的 block 代码中删除创建的 arrayCombi,那就容易多了。

最佳答案

我猜你想要的是 topScore 是由 arrayOne 中的元素除以 arrayTwo 组成的数组 arrayCombi 的最大值。然后您需要在外部作用域中声明所有这些变量。您还需要两个单循环,而不是将第二个循环嵌套在第一个循环中。并且您需要使用push(),否则您只需将新值[arrayOne[i]/arrayTwo[i]]重新分配给arrayCombi(这意味着它将始终是一个只有一个元素的数组)。试试这个方法:

let arrayOne = [ 2,7,5,89,4,67,8,5,3,8];
let arrayTwo = [ 5,87,5,3,7,89,5,34,7,98];
let arrayCombi = [];
for( let i = 0; i < arrayOne.length; i++){
    arrayCombi.push(arrayOne[i] / arrayTwo[i]);
    console.log(arrayCombi);
} 
let topScore = 0;
for( let a = 0; a < arrayOne.length; a++){
    if (arrayCombi[a] > topScore){
        topScore = arrayCombi[a];
        console.log("Top Score; " + topScore);
    }
}

关于javascript - 如何正确地遍历数组并使用作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54438757/

相关文章:

javascript - 从外部域调整 iframe 高度

javascript - 无法使用 javascript 在页面上使用多个表单来定位 input[type=file]

java - Android 如果矩形包含触摸坐标,则添加到数组中,给出奇怪的输出

javascript - 在里面声明函数属性

javascript - 如何净化在 javascript 中创建的结构化 json 文件的输出?

搜索数组以查找字符序列的 C 程序

arrays - 如何从字符串中随机选择一定数量的项目,以空格分隔?

C++ 智能指针范围和资源删除

javascript - 更改超出范围的变量?

javascript - 空字符串传递给 jquery.unobtrusive-ajax.js 中的 getElementById() :16