Javascript解析?

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"];

我正在用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"];
我不确定实现这一目标的最佳/最有效的方法是什么,但任何想法都会有所帮助


谢谢。

如果是纯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);