【问题标题】:Having trouble accessing particular key in object无法访问对象中的特定键
【发布时间】:2021-09-24 06:12:09
【问题描述】:

我在 node.js (sync api) 中使用 csv-parse 将 csv 解析为 js 对象。一切都很好,除了我在访问第一个键值对时遇到了很多麻烦。

如果我控制台记录我得到的结果对象

//object scorecard
{
  'PlayerName': 'Par',
  CourseName: 'Lismore Park Wanaka',
  LayoutName: 'Mid 2020 (New Hole Numbering)',
  Date: '01-07-21 12:44',
  Total: '55',
  '+/-': '',
  Hole1: '3',
  Hole2: '3',
  Hole3: '3',
  Hole4: '3',
  Hole5: '3',
  Hole6: '3',
  Hole7: '3',
  Hole8: '3',
  Hole9: '4',
  Hole10: '3',
  Hole11: '3',
  Hole12: '3',
  Hole13: '3',
  Hole14: '3',
  Hole15: '3',
  Hole16: '3',
  Hole17: '3',
  Hole18: '3'
}

试图访问 PlayerName 我得到未定义,我假设因为 PlayerName 是在引号中(这个对象是由 csv-parse 生成的)。 scorecard.PlayerName 和 scorecard['PlayerName'] 不起作用。但是,如果我使用..

let keys = Object.getOwnPropertyNames(scorecard) 
console.log(scorecard[keys[0]])

我确实得到了 Par 的预期结果。

【问题讨论】:

  • 它显然必须是scorecard["'PlayerName'"](或类似的东西),因为您希望单引号成为值的一部分,而不仅仅是 code上的字符串分隔符> 级别。
  • 如果您将对象分配给一个名为 scorecard 的变量,并像 scorecard['PlayerName'] 一样访问它,它必须工作,我看不出它不能工作的任何理由!除非尚未填充值或者变量一直为空!
  • @CBroe 试过 ["'PlayerName'"] 没用。如果我控制台日志键 [0] 它会吐出一个字符串 PlayerName(无引号)
  • @HSLM 是的..我很困惑。记录 scorecard[0]['PlayerName'] 和 scorecard[0][keys[0]] 彼此相邻未定义和 'Par' 对不起,遗漏记分卡是一个对象数组,这是对象 1,不要'不认为这应该有所作为

标签: javascript node.js node-csv-parse


【解决方案1】:

var a = {
  'PlayerName': 'Par',
  CourseName: 'Lismore Park Wanaka',
  LayoutName: 'Mid 2020 (New Hole Numbering)',
  Date: '01-07-21 12:44',
  Total: '55',
  '+/-': '',
  Hole1: '3',
  Hole2: '3',
  Hole3: '3',
  Hole4: '3',
  Hole5: '3',
  Hole6: '3',
  Hole7: '3',
  Hole8: '3',
  Hole9: '4',
  Hole10: '3',
  Hole11: '3',
  Hole12: '3',
  Hole13: '3',
  Hole14: '3',
  Hole15: '3',
  Hole16: '3',
  Hole17: '3',
  Hole18: '3'
};

console.log(a['PlayerName'])

【讨论】:

  • 我有它的工作,我不必做所有这些
  • 同样有效,但不是 csv-parse 吐出的对象。
【解决方案2】:

在上面提供的完整性检查(谢谢)之后,在相关对象属性的开头发现了一个宽度为 0 的无间断空格字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-07
    • 2019-04-03
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2016-06-13
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多