【问题标题】:How can I define an array with variables and then populate each with a number? [closed]如何用变量定义一个数组,然后用一个数字填充每个数组? [关闭]
【发布时间】:2015-01-21 03:26:57
【问题描述】:

我有一个数组,其中定义了多个变量。但是当尝试将它们中的每一个设置为 0 时,我得到一个错误,指出数组的第一个变量是未定义的。

这是我所拥有的:

var keys = [key1, key2, key3, etc...];

function loadKeys(){
    for(i=0;i<36;i++) {
        keys[i] = 0;
    }
}

【问题讨论】:

  • 什么是key1key2等?如果它们是变量并且您之前没有定义它们,它们将是undefined。所以你的数组看起来像[undefined, undefined, ..., undefined]
  • 那么,我必须事先定义数组中的每个变量吗?我有 35 个……
  • 不清楚您要完成什么。您是否尝试使用一些预定义的值初始化数组?
  • @wahle509:不,如果你真的不需要它们,你就不应该使用它们?
  • @VivinPaliath 它们是“未定义的”,而不是 undefined。尝试访问它们会导致ReferenceError

标签: javascript arrays for-loop undefined populate


【解决方案1】:

该错误是由于 key1 未定义为变量而引起的。实际上有几种不同的方法可以做到这一点,包括手动设置键。

var keys = [0,0,0,0...]

如果您的键有默认值,您可以随时使用推送命令初始化数组,而不是输入所有这些内容

var keys = [];
for (int i= 0; i<36;i++){
    keys.push({defaultValue});
}

这将使数组中的所有元素都使用默认值而不是未定义的元素进行定义

【讨论】:

    【解决方案2】:

    您的代码因ReferenceError 而失败,因为key1key2 等不存在 - JavaScript 运行时不知道您要求什么值。

    您的示例实际上并不需要设置这些变量。如果您只是想要一个包含 35 个元素的数组,全部设置为 0,您可以使用:

    var keys = [];
    for(var i = 0; i < 36; i ++) {
      keys.push(0);
    }
    

    有关其他方法,请参阅Most efficient way to create a zero filled JavaScript array?

    展望未来,ES6 提供了Array.prototype.fill

    var keys = new Array(35);
    keys.fill(0);
    

    此方法尚未广泛实施,但您可以在 Firefox 31+ 中尝试一下。

    ES6 compatibility table

    【讨论】:

      【解决方案3】:
      var keys = ['key1', 'key2', 'key3'];
      
      function loadKeys(){
          for(i=0;i<36;i++) {
              keys[i] = 0;
          }
      }
      

      到目前为止为我工作。我不明白你的问题,这些变量在你的数组中吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-18
        • 1970-01-01
        相关资源
        最近更新 更多