【问题标题】:How do you name a property of an object with a string plus a variable?如何用字符串和变量命名对象的属性?
【发布时间】:2017-07-04 19:49:43
【问题描述】:

如果我有一个对象:

var enemies = {};
var enemyNumber = 0;

然后我如何为该对象创建一个以字符串 + 变量命名的新属性,就像这样(我知道这不是有效的 javascript):

enemyNumber++;
enemies.enemy + enemyNumber.toString() = {};

enemies.enemy + enemyNumber.toString() 是另一个对象)

【问题讨论】:

  • 您正在寻找数组。
  • 呃,你的问题太令人困惑了……例子?
  • 这缺少提供上下文的示例。
  • 这将取决于您的用例,但几乎可以肯定,数组是存储敌人的更好方法。

标签: javascript string variables object javascript-objects


【解决方案1】:

是这样的:

enemies['enemy' + enemyNumber] = {}

在 JavaScript 中,点运算符可以与括号表示法互换。这意味着enemies.enemy1enemies['enemy1'] 相同。括号表示法更间接,它允许您使用表达式来引用对象的属性。

【讨论】:

    【解决方案2】:

    为您的enemies 对象动态添加属性:

    var enemies = {};
    var enemyNumber = 0;
    enemies.enemy="Coco";
    ...
    enemies.enemyNumber = enemies.enemy + enemyNumber;
    

    连接字符串和数字时不需要toString()

    【讨论】:

      【解决方案3】:

      如果你想给每个对象一个顺序标识符:

      var enemies = { };
      var enemyNumber = 0;
      
      function addEnemy(attributes) {
        attributes.id = enemyNumber;
        enemies[enemyNumber] = attributes;
        enemyNumber++;
      }
      
      addEnemy({ name: 'Boss Man' });
      

      请记住,您可以使用 [...] 表示法引用对象的属性并以这种方式计算值。 x.yx['y'] 是等价的。

      【讨论】:

        【解决方案4】:

        您可以使用方括号来创建动态属性:

        var enemies = {};
        var enemyNumber = 0;
        
        enemyNumber++;
        enemies['enemy' + enemyNumber] = {};
        
        console.log(enemies);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-07
          • 1970-01-01
          • 2019-08-25
          • 2011-03-31
          • 1970-01-01
          • 2015-08-15
          相关资源
          最近更新 更多