Javascript 解析?

Javascript parsing?

我正在为 adobe after effects 在 extendscript 中编写一些代码,最终成为 javascript。

我有一个数组,我想只搜索单词 "assemble" 和 return 整个 jc3_RIG_008_masterLayer assemble 字符串

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 循环应该可以解决问题。根据 some sources. Also using indexOf() is faster than using search() according to other sources:

,这是最快的方法
for (var i = 0, len = comps.length; i < len ; i++) {
   if (comps[i].indexOf('assemble') > -1) return comps[i]; //or store and break
}

var comps = ["_MAIN", "jc3_RIG_008_masterLayer assemble","jc3_RIG_008_masterLayer contact sheet", "[Z] source", "MM004 source"];

    comps.forEach(function(el) {
       if (el.indexOf('assemble') > -1) document.write('loop 1: ' + el + '<br>');
    });


    for (var i = 0, len = comps.length; i < len ; i++) {
       if (comps[i].indexOf('assemble') > -1) document.write('loop 2: ' + comps[i]);
    }
<div id="output"></div>

我会把这个留在这里作为参考:

像这样的东西适用于任何支持 ECMAScript5 的东西(但根据消息来源和@frxstrem,这在 ExtendedScript 中不可用):

comps.forEach(function(el) {
   if (el.indexOf('assemble') > -1) return el;
});

@josegomezr 使用简单循环的想法是正确的。我将该想法更新为 return 发帖人正在寻找的字符串。

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);