Javascript解析?
我正在用extendscript for adobe after effects编写一些东西,最终是javascript 我有一个数组,我只想搜索单词“assembly”,然后返回整个jc3_RIG_008_masterLayer汇编字符串Javascript解析?,javascript,regex,parsing,extendscript,after-effects,Javascript,Regex,Parsing,Extendscript,After Effects,我正在用extendscript for adobe after effects编写一些东西,最终是javascript 我有一个数组,我只想搜索单词“assembly”,然后返回整个jc3_RIG_008_masterLayer汇编字符串 var comps = ["_MAIN", "jc3_RIG_008_masterLayer assemble","jc3_RIG_008_masterLayer contact sheet", "[Z] source", "MM004 source"];
var comps = ["_MAIN", "jc3_RIG_008_masterLayer assemble","jc3_RIG_008_masterLayer contact sheet", "[Z] source", "MM004 source"];
我不确定实现这一目标的最佳/最有效的方法是什么,但任何想法都会有所帮助
谢谢。如果是纯JS,您可以这样做:
var found = false;
for(var i in comps){
if(comps[i].search("assemble") != -1){
found = true;
break;
}
}
if(found){
// your code if found
}else{
// your code if not.
}
正常的for循环应该可以做到这一点。这是最快的方法。根据以下方面,使用
indexOf()
也比使用search()快:
for(变量i=0,len=comps.length;i-1)返回comps[i];//或存储并中断
}
var comps=[“_MAIN”、“jc3_RIG_008_masterLayer assembly”、“jc3_RIG_008_masterLayer contact sheet”、“[Z]源”、“MM004源”];
公司财务报表(功能(el){
if(el.indexOf('assemble')>-1)document.write('loop 1:'+el+'
');
});
对于(变量i=0,len=comps.length;i-1)document.write('loop 2:'+comps[i]);
}
@josegomezr使用简单循环的想法是正确的。我更新了这个想法,以返回海报正在寻找的字符串
var comps = ["_MAIN", "jc3_RIG_008_masterLayer assemble","jc3_RIG_008_masterLayer contact sheet", "[Z] source", "MM004 source"];
var compWithAssemble;
for(var i in comps){
if(comps[i].indexOf("assemble") > -1){
compWithAssemble = comps[i];
break;
}
}
// compWithAssemble has the string you are looking for.
console.log(compWithAssemble);
只是澄清一下:您有数组comps
,并且您希望从该数组中查找包含单词“assembly”的元素?没有性能方法,它总是O(n),除非您有一组预定义的字符串,并且只搜索这些字符串,然后可以通过创建映射对其进行优化。array.forEach
不返回数组,但可以提前中断循环。要返回过滤元素的数组,请使用array.filter
或array.map
。根据,截至去年,ExtendScript仅符合ECMAScript 3标准。我不认为Adobe从那时起就更新了ExtendScript。“…最终成为javascript”我认为它会更先进。看起来ECMAScript3+4中的一些功能是所有可用的。@josegomezr我不想返回数组。OP要求一个字符串。根据Array.filter
自ECMAScript标准5.1以来就存在,并且根据@Frxstrem extendedscript只完成ECMAScript标准3。我更新了我的答案,使用了一个简单的循环,如josegomezr。我的返回海报正在寻找的字符串。请注意:如果这是一个大数组,使用indexOf
会更好<代码>搜索
通常在需要使用正则表达式时使用。在这种情况下,这显然不重要。谢谢你的提醒。我会将其更改为indexOf
,这是我通常使用的。
var comps = ["_MAIN", "jc3_RIG_008_masterLayer assemble","jc3_RIG_008_masterLayer contact sheet", "[Z] source", "MM004 source"];
var compWithAssemble;
for(var i in comps){
if(comps[i].indexOf("assemble") > -1){
compWithAssemble = comps[i];
break;
}
}
// compWithAssemble has the string you are looking for.
console.log(compWithAssemble);