Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中存储已解析YAML文件的行号?_Javascript_Parsing_Yaml - Fatal编程技术网

如何在JavaScript中存储已解析YAML文件的行号?

如何在JavaScript中存储已解析YAML文件的行号?,javascript,parsing,yaml,Javascript,Parsing,Yaml,我目前正在编写一个Node.js应用程序来解析YAML文件。在某些情况下,我需要能够检索对应于某个值的行号。例如,如果YAML是 人: 用户名:jsmith 密码:hunter2 我可能想显示消息“第3行出错:密码错误” 显然,这是一个微不足道的例子,但关键是YAML本身没有任何问题 我一直在使用并且能够通过Object.defineProperty方法将行号直接添加到对象中,但是这不适用于字符串,因此如果我们有以下YAML 密码: - aG00dP@ssw0Rd -猎人2 我无法给出“猎

我目前正在编写一个Node.js应用程序来解析YAML文件。在某些情况下,我需要能够检索对应于某个值的行号。例如,如果YAML是

人:
用户名:jsmith
密码:hunter2
我可能想显示消息“第3行出错:密码错误”

显然,这是一个微不足道的例子,但关键是YAML本身没有任何问题

我一直在使用并且能够通过
Object.defineProperty
方法将行号直接添加到对象中,但是这不适用于字符串,因此如果我们有以下YAML

密码:
- aG00dP@ssw0Rd
-猎人2
我无法给出“猎人2”的行号

我的一些想法:

  • 框选
    {lineNumber,value}
    对象中的所有值。这对我来说似乎很笨重,因为我必须在任何事情上调用
    .value
    。我真的不希望行号影响任何作用于对象的下游代码
  • 存储值及其行号的散列。这是行不通的,因为据我所知,我无法区分重复字符串之间的区别(例如,如果文档中进一步包含“hunter2”)
  • 扩展字符串以存储行号,但仍像字符串一样。这似乎很理想,但我不知道这是否完全可能。我已经试过了,但没有一种方法对我有效

还有其他我没想到的方法吗?我提到的任何方法都是可行的,而我只是做错了吗?

对于任何感兴趣的人,我最终将行号存储在数组/对象上,并将其放在字符串上。这并不理想,但试图以其他方式解决这一问题的成本超过了好处。另外,我的用例可能会看到更多的数组/对象

我在这里分叉了yamljs存储库:

编辑:我遇到了另一个问题,其中提到了将属性添加到
字符串
,并意识到这是我问题的解决方案。我修改了上面的存储库以返回字符串对象,而不是原语,这提供了我需要的功能