0

我需要在 JavaScript 中重新计算数组的值,我正在尝试这样做:

        for (var i = 0; i < totalNum; i++) {
          x = 3;
          if (chane[i]<rand) {
            chane[i+1] += chane[i];
            chane[i] = 0;
          } else{
            chane[i] -= x;
            chane[i+1] += x;
          };

chanearray 带有 values [15,4,4,0],并作为[12,40,40,3]. totalNum是 4。

我一直盯着这段代码试图找出我的新手错误隐藏在哪里......我是 JavaScript 新手,所以这很可能只是一些语法错误。

4

1 回答 1

1

您忘记将值转换为整数,并且应该将字符串值传递给循环检查以下代码:

    for (var i = 0; i < totalNum; i++) {
      // convert to int by mul to 1
      chane[i]*=1;
      chane[i+1]*=1;

      x = 3;
      if (chane[i]<rand) {
        chane[i+1] += chane[i];
        chane[i] = 0;
      } else{
        chane[i] -= x;
        chane[i+1] += x;
      };
    }

如果设置chane = [15,4,4,0]并设置 totalNum = 4,则结果为:[12, 4, 4, 0, NaN]并且NaN用于检查最后一个值,因为当 i=3 时 chane[ 3] 等于 0 和 chane[i+1] 等于 undefined 和 undefined 乘以每个数字为 NaN,您可以通过更改上限来修复它(在您的示例中:将 totalNum 设置为 3,通过更改为 totalNum = chane 来修复它.length-1) 或添加一些if

于 2013-05-21T21:57:08.113 回答