【问题标题】:How to make string to object or array format [duplicate]如何将字符串转换为对象或数组格式[重复]
【发布时间】:2019-02-23 04:19:45
【问题描述】:

我必须创建一个格式如下的字符串

  "currentState[0]['children'][1]"

但我需要稍后执行它,就像下面一样

  currentState[0]['children'][1]

我在 currentState 上有元素和子元素。但是在循环时我必须创建一个字符串。但后来我需要作为数组执行。

我已经尝试了几乎所有的数组方法。 Array.call、bind 等以及字符串方法。无法获得输出

我该怎么做

【问题讨论】:

  • 发布的问题似乎根本没有包含any attempt 来解决问题。 StackOverflow 期待您 try to solve your own problem first,因为您的尝试有助于我们更好地了解您想要什么。请编辑问题以显示您尝试过的内容,以说明您在minimal reproducible example 中遇到的特定问题。欲了解更多信息,请参阅How to Ask 并拨打tour
  • 使用评估:$str = "currentState[0]['children'][1]"。然后:$test = eval($str);
  • 可以使用eval函数。 eval 将评估完整的字符串
  • 是的 eval 会完成工作,但是eval 不受欢迎,因为它可用于对您的代码、您的应用程序、您的用户进行各种各样的攻击......

标签: javascript javascript-objects


【解决方案1】:

请更具体地回答您的问题,但据我了解,您可以使用 javascript 的 eval() 函数将字符串作为 javascript 执行,因此当您需要执行它时,只需运行 eval("currentState[0]['children'][1]")

eval() 的替代方法是

function evalFn(obj) { return Function('"use strict";return (' + obj + ')')(); }

evalFn("currentState[0]['children'][1]")

请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval 以获得更深入的说明。

【讨论】:

  • 绝对不要这样做。 eval 是一个重大的安全风险。
猜你喜欢
  • 2020-09-28
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 2014-08-20
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多