【问题标题】:js converting string with [*] into variablejs 将带 [*] 的字符串转换为变量
【发布时间】:2018-09-23 13:12:11
【问题描述】:

我有从我的 api 获得的基本变量:

nurseListSpeciality.avatar = "srcs[14]"

我想把 srcs[14] 改成数组名,我的对象应该是这样的:

nurseListSpeciality:[{avatar: srcs[14]}]

主要问题是我不想在数组上执行引用,但我只想将它的名称放在我的对象中。

这就是我没有使用eval() 的原因。 Eval 正在尝试获取 srcs[14] 值并将其放入我的对象中。这不是我想要的。

【问题讨论】:

  • 应该是eval(this.nurseListSpeciality[i].avatar)
  • 这给了我Uncaught (in promise) ReferenceError: srcs is not defined at eval
  • 这可能是因为在执行eval 的范围内没有变量srcs
  • 您是否一直将srcs 作为变量?
  • @NinaScholz 不,我正在执行方法,所以在方法中我需要有 this.srcs 或将其声明为方法内部的变量。但是it is not the case 我只想将"srcs[14]" 转换为srcs[14],而不是在对象内部得到srcs[14] value

标签: arrays angular object vue.js object-literal


【解决方案1】:

如果您愿意使用 lodash,使用 _.get 是一个很好的方法:

nurseListSpeciality.avatar = _.get(window, "srcs[14]");

此代码假定srcs 是一个全局可用的变量(在window 对象中)。如果您有其他范围,则应将window 替换为适当的对象。

【讨论】:

  • 我现在会避免使用 lodash,所以我不知道这是否适合我
【解决方案2】:

vuejs 控制台给出:

Uncaught (in promise) TypeError: this.nurseListSpeciality[i].eval is not a function

错误信息告诉你this.nurseListSpeciality[i]没有eval方法,你需要在this.nurseListSpeciality[i].avatar上调用全局eval

 eval(this.nurseListSpeciality[i].avatar)

注意

  • 如果当前范围内没有可用的变量 srcs,这将不起作用。

【讨论】:

  • 这将不起作用,因为 eval 将从范围中获取 srcs 值并执行它,而不是按原样从字符串创建 srcs[14] 变量
  • eval 不会创建变量,除非有像eval( "var src=[]; src[14]" ) 这样的创建变量的代码。如果你能说出你的实际需求,我可以提出一个可能的解决方案。
  • 嗯,让我试试这个
  • 即使在这种情况下,src[14] 也会返回 undefined,因为数组大小为 0。看起来您可以控制可以作为值传递的内容。如果您可以分享实际需求,我可以提出更好的解决方案。
  • 当我在我的方法中声明 let srcs = "random text" 时,我得到了 undefined
猜你喜欢
  • 2014-09-01
  • 2010-09-30
  • 2019-04-11
  • 2016-11-20
  • 2017-04-20
  • 2011-08-27
  • 2010-12-04
相关资源
最近更新 更多