问题描述
我在 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]])
我确实得到了理想的结果。
解决方法
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'])
经过上面提供的完整性检查(谢谢)后,在所讨论的对象属性的开头发现了一个 0 宽度的无间断空格字符。