3

我遇到了一个我确实设法解决的问题,但老实说我不明白它是如何工作的。

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

console.log(largest);

我的数组如何在 if 语句中为我的变量赋值?

为什么这个版本不起作用?

array[i] = largest;

我对编程很陌生,我相信了解这么小的基础知识可以帮助许多初学者成为称职的程序员。

4

5 回答 5

2
if(array[i] > largest) {
           largest = array[i];
        }

array[i]is 3and largestis 0then 如果条件通过并且

largest = array[i];

现在从右到左largest赋值为3.

所以下一个循环array[i]6那么下一个6 > 3真实的,它会再次改变的largest to 6

喜欢它会给你最大的数字。

于 2013-04-18T11:43:48.747 回答
2

我认为您将编程中的赋值语句误认为数学中的相等语句。

分配与平等

在您的代码中,当您说最大 = array[i] 时,您正在为变量“最大”分配数组第 i 个位置上元素的值。请注意,该数组在此分配中没有更改其任何值。

另一方面,array[i] = maximum 将尝试将变量“最大”的当前值分配给数组的第 i 个位置。

于 2013-04-18T11:58:30.237 回答
1

此代码正在尝试计算值数组中的最大值..

正在做

array[i] = largest;

会修改不想要的输入本身...您需要从给定输入中找到最大值..而不是将给定输入位置修改为某个最大值。

这就是为什么

largest = array[i] 

是正确的。

于 2013-04-18T11:43:26.343 回答
1

为变量赋值时,变量必须位于赋值运算符的左侧(等号“=”)。

这种方式左侧有变量:

largest = array[i];

它将array[i]值放入最大的变量中,因此它可以工作。

这种方式是倒退的:

array[i] = largest;

它将最大值放入array[i]元素中,您的数组最终会出现一堆零。

于 2013-09-28T17:57:03.300 回答
0

我知道这是一个旧线程,但我今天遇到了这个问题,并想帮助其他开发人员获得适当的知识来源,直接来自 Kyle Simpson。

你不懂JS

操作员分配有他自己的工作方式。它计算右侧“=”的语句,以便稍后将其分配给左侧。了解它是如何工作的非常重要。

例子:

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

console.log(largest);

这里,largest = array[i];

JS, 是计算右边的语句并赋值给左边

所以玩得开心,玩得开心。

于 2018-12-07T20:41:41.937 回答