不使用eval动态形成JSON对象遍历
假设我有以下内容:(动态生成且长度不同)
associations = ["employer", "address"];
尝试遍历 JSON 对象,并希望形成如下所示的内容:
data.employer.address
或
data[associations[0]][association[1]]
不执行此操作:
eval("data."+associations.join('.'));
最后,我可能会因为这样说而被回避,但是在这样的情况下使用 eval 可以吗?只是检索数据。
Given I have the following: (which is dynamically generated and varies in length)
associations = ["employer", "address"];
Trying to traverse the JSON object, and wanting to form something like the following:
data.employer.address
or
data[associations[0]][association[1]]
Without doing this:
eval("data."+associations.join('.'));
Finally, I may be shunned for saying this, but is it okay to use eval in an instance like this? Just retrieving data.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
为什么不直接迭代你的关联呢?
您的 eval 方法必须生成一个新字符串并解析代码,然后才能开始遍历。
Why not just iterate over your associations?
Your eval method has to generate a new string and parse the code before it can even start traversing.
这是使用原型的一种方法。
如果您可以保证用户不会影响您传递给它的字符串,那么使用
eval
就可以了。如果您的输入来自用户或来自用户可能更改的 URL,您可能应该避免eval
。Here’s one way using Prototype.
Using
eval
is fine if you can guarantee the user won’t be able affect the string you’re passing to it. If your input is coming from the user or from a URL that could be changed by the user, you should probably avoideval
.您始终可以创建动态脚本节点。例如:
不需要评估。
You can always create a dynamic script node. For instance:
No eval required.