【问题标题】:Can't access value from key existing in an object in node.js无法从 node.js 中对象中存在的键访问值
【发布时间】:2020-08-22 18:03:16
【问题描述】:

我是 node.js 的初学者,遇到了一个错误。所以我有一个名为 roomCards 的对象,它存储与玩家所拥有的卡片相关的详细信息,这些卡片使用玩家 ID 作为键,他们的卡片作为值。现在的问题是,我无法使用与未定义完全相同的 playerId 访问玩家卡。这是我正在处理的对象。

roomCards = {
roomId:5,
deckCards:[ '2C', '2D',  '2H',  '2S',  '3C', '3D',
      '3H', '3S',  '4C',  '4D',  '4H', '4S',
      '5C', '5D',  '5S',  '6C',  '6D', '6H',
      '6S', '7C',  '7D',  '7H',  '7S', '8C',
      '8D', '8H',  '8S',  '9C',  '9D', '9H',
      '9S', '10D', '10H', '10S', 'AC', 'AD',
      'AH', 'AS',  'JC',  'JH',  'JS', 'KD',
      'KH', 'KS',  'QC',  'QD',  'QH', 'QS'],
'W48PoPabFUSN9r-iAAAC': [ '5H', 'JD', 'KC' ] --------- this is the value i'm trying to access using the playerId key 
}

任何帮助将不胜感激。祝您有美好的一天:)))

【问题讨论】:

  • 请根据minimal reproducible example显示您尝试过但不起作用的具体错误详情
  • @charlietfl,对此深表歉意,每当我尝试访问 playerId 的值时,我都会得到一个“未定义”的值:'W48PoPabFUSN9r-iAAAC'
  • 尝试用什么代码访问它?

标签: javascript object key undefined


【解决方案1】:

当您使用字符串文字作为键时,常规的点运算符 (.) 不起作用。在这种情况下,您将使用[] 引用此类密钥。

因此,在您的情况下,假设玩家 ID 存储在变量名称 playerId 中,您可以使用以下方法引用该特定属性:

roomCards[playerId].

var roomCards = {
roomId:5,
deckCards:[ '2C', '2D',  '2H',  '2S',  '3C', '3D',
      '3H', '3S',  '4C',  '4D',  '4H', '4S',
      '5C', '5D',  '5S',  '6C',  '6D', '6H',
      '6S', '7C',  '7D',  '7H',  '7S', '8C',
      '8D', '8H',  '8S',  '9C',  '9D', '9H',
      '9S', '10D', '10H', '10S', 'AC', 'AD',
      'AH', 'AS',  'JC',  'JH',  'JS', 'KD',
      'KH', 'KS',  'QC',  'QD',  'QH', 'QS'],
'W48PoPabFUSN9r-iAAAC': [ '5H', 'JD', 'KC' ]
};

var playerId = 'W48PoPabFUSN9r-iAAAC';

console.log(roomCards[playerId]);

【讨论】:

  • @chetan7,我试过这样做,但它仍然返回 undefined 而不是卡片数组。
  • playerId 是从哪里来的?您正在查找的 playerId 可能不存在于您正在维护的对象数组中。 (在您的示例中,您只有一个对象)。如果您可以分享您尝试访问 playerId 的位置和方式的代码 sn-p 将会很有帮助。
  • @chetan7 感谢您的回复。我试图从中访问 id 的对象不断更改 id,因为 id 已分配给连接到我的服务器的每个新客户端。现在,在我尝试从我的对象访问 playerID 之前,我确实将对象取出,并且我的“id”在对象中。所以当我尝试访问 id 的值时得到一个 undefined 是很奇怪的。
  • 您可能想要维护此类对象的数组(或将对象存储在给定会话的数据库中)。如果没有您尝试访问的代码,这将很难回答。
  • @chetan7 for(let i=0;i
【解决方案2】:

试试这个

roomCards["W48PoPabFUSN9r-iAAAC"]

【讨论】:

    猜你喜欢
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 2020-10-24
    • 2019-04-15
    • 2021-09-24
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多