javascript - 不确定如何解析数组中的字符串
问题描述
我正在尝试从包含字符串的数组中解析结果。
myArray = ['thisComp.layer("Body Text")','thisComp.layer("Header")'];
a = myArray[selector];
aRect = a.sourceRectAtTime(5);
selector 是一个滑块控件,用于选择 myArray 中的项目,它按预期工作。
最后一行抛出一个错误 - “a.sourceRectAtTime 不是一个函数”。我相信我必须先解析第二行的结果,然后才能在第三行中使用它,但我无法解决这个看似简单的问题。
解决方案
你在评论中说过会selector
是这样的事情。0
1
您的数组包含strings,但您在评论中说过您希望能够获得实际的东西,而不是字符串。
如果您想在创建数组时按原样使用这些值,那么如评论中所述,您将删除引号:
myArray = [thisComp.layer("Body Text"), thisComp.layer("Header")];
调用thisComp.layer("Body Text")
并将thisComp.layer("Header")
它们的返回值存储在数组中。
但是你在评论中说没有做你想要的。我唯一能想到的另一件事是您想稍后在使用数组时调用这些函数。如果是这样,您有几个选择:
如果它总是
thisComp.layer(...)
,则仅将字符串"Body Text"
和存储"Header"
在数组中,然后:myArray = ["Body Text", "Header"]; // ... a = thisComp.layer(myArray[selector]); aRect = a.sourceRectAtTime(5);
如果内容变化不止于此,请存储函数,然后在您准备好使用它们时调用它们:
在 ES2015+ 中,您可能会使用箭头函数:
myArray = [ () => thisComp.layer("Body Text"), () => thisComp.layer("Header") ]; // ... a = myArray[selector](); aRect = a.sourceRectAtTime(5);
在 ES5 中,您可能会使用
bind
(但您也可以在 ES2015+ 中这样做):myArray = [ thisComp.layer.bind(thisComp, "Body Text"), thisComp.layer.bind(thisComp, "Header") ]; // ... a = myArray[selector](); aRect = a.sourceRectAtTime(5);
推荐阅读
- wordpress - Woocommerce ordere 自动删除失败并在 10 分钟后取消订单
- node.js - 使用本地调用的 lambda 函数向外部 API 发出请求并将数据记录到控制台
- ios - iOS | 如何在 UICollectionView 中为一个部分使用自定大小的单元格并为另一部分使用固定大小?
- eclipse - 从 Eclipse 连接到 Azure Devops 服务时授权失败
- amazon-web-services - AWS route53域名注册及计费发票| 发票不显示域名
- python - 如果缺少日期时间,则尝试为 groupby 对象查找 idxmin 或 idxmax 时出错
- javascript - @RequestParam 没有收到价值
- python - 使用错误信息登录
- c# - 如何增加缓冲区大小以通过 .NET 中的 websocket 发送数据
- angular - 子组件的 Formcontrol 值无法在提交时绑定