代码之家  ›  专栏  ›  技术社区  ›  Rizwan Mohammed

无法获取关联数组值?

  •  -1
  • Rizwan Mohammed  · 技术社区  · 7 年前

    不太确定这里发生了什么,所以需要澄清一下。

    我有一个名为dbstats的对象,它保存的值基于:

    团队(字符串)==>统计对象

    但是,当我尝试使用带有变量的键来获取对象时,我会得到未定义的,但是当我使用文字字符串值时,它会正常工作。

    //populate the associative array, result is an object passed in as a parameter
    for (var i = 0; i < result.length; i++)
    {
        DBstats[result[i].Team] = result[i];
    }
    
    var Team1str = "team1";
    console.log(DBstats); //prints everything in the associative array, confirming string => object
    console.log(DBstats["team1"]); //prints out object
    console.log(DBstats[Team1str]);  //prints undefined???
    

    我不明白什么?

    result array =
    {
      team1: {team1.name, data... }
      team2: {team2.name,  data... }
      team3: {team3.name, data... } 
      team4: {team4.name,  data... }
      team5: {team5.name, data... } 
      team6: {team6.name,  data... }
      team7: {team7.name,  data... }
      team8: {team8.name,  data... }
      team9: {team9.name,  data... }
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Nurbol Alpysbayev    7 年前

    嘿,你的问题有那么多混乱,但我喜欢这种问题(它们就像拼图)。

    所以你可能想要这个:

        const result = [
          {name: 'team1', data: {}},
          {name: 'team2', data: {}},
          {name: 'team3', data: {}},
        ]
        
        let DBstats = {}
        
        for (var i = 0; i < result.length; i++)
        {
            DBstats[result[i].name] = result[i];
        }
        
        var Team1str = "team1";
        console.log(DBstats); //prints everything in the associative array, confirming string => object
        console.log(DBstats["team1"]); //prints out object
        console.log(DBstats[Team1str]);  //prints out object
    1. 您可能来自PHP世界。而且,不,JS中没有“关联数组”这样的术语。相反,它被称为“对象”。
    2. 我格式化了你的非JS数组 result 实际的JS语法。
    3. 一切都按预期工作(通过按“运行代码片段”自己检查它)!