首页 > 解决方案 > JS数组在读取时被布尔值覆盖

问题描述

第一次来这里,我是一个糟糕的开发人员,所以请提前原谅我可能犯的许多错误:)

这是我的问题:我正在尝试制作一个程序来检查数组中每个数字从 1 到 9 的比例(我正在测试本福德定律),因为我创建了 9 个不同的变量(基本上是 nX 其中X = 1-9),我正在使用for循环读取我的数组,并在每次找到相应的数字时递增我的每个变量(如果array [i] = X,nX ++),然后我控制台记录我的数组。问题是在该控制台日志上,我的数组中的所有值都设置为“1”,在执行这几行之前情况并非如此。所以我不太确定会发生什么,但我猜测我的“if”检查返回“true”并将我的数组元素的值更改为 1 以反映这一点。所以我的问题是:你们中的任何一个聪明的巫师都知道我是什么

这是一些代码:

for (i = 0; i < benfordArrayProcessed.length; i++) {
  if (benfordArrayProcessed[i] = 1) {

    n1++;

  } else if (benfordArrayProcessed[i] = 2) {

    n2++;

  } else if (benfordArrayProcessed[i] = 3) {

    n3++;
  }
  [...]

标签: javascriptarraysboolean

解决方案


在您的表达式中,您需要使用布尔表达式而不是赋值,例如if (benfordArrayProcessed[i] == 1). 由于第一个语句本身的赋值,错误中的值会被覆盖,这就是您看到所有元素都为 1 的原因。


推荐阅读