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);
我正在为 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);