将数组值分配给变量

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;

我是一个编程新手,我相信理解像这样基础的东西可以帮助许多初学者成为有能力的程序员。


除了书籍之外,一个很好的在线资源是杰出的MDN。MDN - 学习JavaScriptMDN - JavaScript文档索引 在那里,你可以找到关于从数组到if语句再到闭包的任何东西的文档和代码示例。从最简单的到更复杂的都有。希望这个资源能帮助你实现你的目标。 - Nope
5个回答

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

如果array[i]3,且largest0,那么if条件就会通过。
largest = array[i];

将值从右赋给左

现在largest的值是3

所以下一个循环中array[i]6,因此下一个6 > 3为真,它会再次将largest更改为6

就像它将给你最大的数字一样。


我觉得我的脑海里刚刚有了一些想法,我现在开始明白赋值是如何工作的了!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 谢谢谢谢谢谢。赋值通过将右侧的值分配给左侧来工作?每种类型的赋值都是这样吗?对于 a = b; 也是这样吗? - mrageh
所以当我使用等号时,它被称为赋值,值从右侧分配到左侧。如果我错了,请纠正我。 - mrageh

2
我认为您将编程中的赋值语句与数学中的等值语句混淆了。
在您的代码中,当您说largest = array[i]时,您正在将变量'largest'分配为数组第i个位置上的元素的值。请注意,在此赋值中,数组没有改变其任何值。
另一方面,array[i] = largest将尝试将变量“largest”的当前值分配给数组上的第i个位置。

哇,太快了,谢谢你。但也许我太蠢了,还是不明白。我知道赋值和数学中的相等不一样。真的很沮丧,也许我需要睡一觉?我甚至不知道该问什么来澄清我不理解的地方 :( - mrageh

1
这段代码试图计算一个值数组中的最大值。
执行中...
array[i] = largest;

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

这就是为什么

largest = array[i] 

是正确的。


1
当你给一个变量赋值时,变量必须位于赋值运算符(等号“=”)的左侧。
这种方式将变量放在左侧:
largest = array[i];

它将array[i]的值放入largest变量中,从而实现了功能。

这种方式是反过来的:

array[i] = largest;

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

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中,是将右侧的语句计算赋值给左侧

所以,享受阅读和编程的乐趣吧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接