我有var内容的var对象,我想找到数组 看起来像以下模式的文本
值:函数()
它之间的空间无关紧要,
例如,对于以下文本,我应该得到一个数组[dosomthing,press,click]
doSomething:function()
press : function()
click: function
我需要得到像
这样的数组在搜索论坛后,我发现了一些对我不起作用的例子。 任何想法如何处理它?</ p>
var array = (s.indexOf("/\w+:\s*:function") > -1);
答案 0 :(得分:1)
使用正向前瞻来匹配字符串:function
> s = 'doSomething:function()\npress : function()\n\nclick: function'
> s.match(/\w+(?=\s*:\s*function)/g)
[ 'doSomething', 'press', 'click' ]
<强>解释强>
\w+ word characters (a-z, A-Z, 0-9, _) (1 or
more times)
(?= look ahead to see if there is:
\s* whitespace (\n, \r, \t, \f, and " ") (0
or more times)
: ':'
\s* whitespace (\n, \r, \t, \f, and " ") (0
or more times)
function 'function'
) end of look-ahead
答案 1 :(得分:0)
看起来你发布了一个格式错误的对象。如果我们更正代码..
{
doSomething:function() {},
press : function(){},
click: function(){}
}
...我们可以使用Object.keys()
提取其密钥,然后仅通过方法过滤它们。
var myObject = {
doSomething: function(){},
press: function(){},
click: function(){},
someOtherProperty: 5
};
var keys = Object.keys(myObject);
var methods = keys.filter(function(key){
return typeof myObject[key] == 'function';
});
变量methods
将为['doSomething', 'press', 'click']
。