【发布时间】: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