【问题标题】:JS/Nodejs can't access quoted index of objectJS/Nodejs 无法访问引用的对象索引
【发布时间】:2023-03-07 02:56:01
【问题描述】:

我在 nodejs 中使用 babyparse (PapaParse) 将 csv 处理为 javascript 对象。

一个对象输出如下:

{ 'ProductName': 'Nike t-shirt',
   ProductPrice: '14.99',
   ProductPriceOld: '39.99' }

您可以看到以某种方式引用了第一个索引(“ProductName”)。 我无法访问此值。我试过了:

console.log(product['ProductName'])
console.log(product["\'ProductName\'"])
console.log(product['\'ProductName\''])
console.log(product.ProductName)

这一切都会导致“未定义”。 product.ProductPrice 或 product['ProductPrice'] 给了我正确的值。

知道是什么原因造成的,以及如何解决?

编辑:如果我 JSON.stringify(product) 单引号消失了,但如果我 JSON.parse(json) 进入对象,单引号返回..?

【问题讨论】:

    标签: javascript node.js object indexing


    【解决方案1】:

    属性名称在输出中表示为字符串而不是标识符的原因是该名称包含标识符中不允许的字符。

    具体来说,第一个字符是:U+FEFF : ZERO WIDTH NO-BREAK SPACE [ZWNBSP](别名 BYTE ORDER MARK [BOM])。

    您需要在访问时将其包含在属性名称中。

    product["\uFEFFProductName"]
    

    【讨论】:

    • 啊,我没有注意到不可打印的字符 - 现在你指出它很明显。 ;) 加一个,我将删除我的答案。
    • 谢谢,我自己永远也想不通。我使用 body = body.replace(/\uFEFF/g, '') 从我的输入中删除它,现在处理完美。
    猜你喜欢
    • 1970-01-01
    • 2016-12-31
    • 2019-03-16
    • 2017-04-23
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2019-09-14
    • 2020-07-19
    相关资源
    最近更新 更多