【问题标题】:Print all parameter name of a Javascript Function打印 Javascript 函数的所有参数名称
【发布时间】:2015-09-19 10:08:57
【问题描述】:

我有一个 javascript 文件,我在其中定义了一个自定义函数,该函数接受一些输入对象并执行一些操作。
该文件是从许多文件中调用的。
现在我想打印此函数中使用的所有参数名称。

可能我需要将整个文件作为字符串读取并打印所需的输出

 function customFunction(param){
       if(param.isOK == yes){}
       if(param.hasMenu == no){}
       ..
       ..
       ..
       if(param.cancelText == "cancel"){}

    }

我想写一个程序来读取这个文件并输出所有的参数名称。 例如

没问题 |有菜单 | ...... |取消文本..

【问题讨论】:

  • 参数是对象还是字符串??

标签: javascript c# data-structures


【解决方案1】:

您可以使用Regular Expression

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;

namespace _32666940
{

    class Program
    {
        public static String str = "function customFunction(param){ " +
            "if(param.isOK == yes){}" +
            "if(param.hasMenu == no){}" +
            "if(param.cancelText == \"cancel\"){}" +    // I had to add \ before "
            "if(param[  'isOK'  ] == yes){}" +
            "if(param[\"isOK\"] == yes){}" +
            "}";
        static void Main()
        {
            //@"param\.[a-zA-Z_]+[a-zA-Z0-9_]*"
            Regex regex = new Regex(@"param\.[a-zA-Z_]+[a-zA-Z0-9_]*");
            Match match = regex.Match(str);
            while (match.Success)
            {
                Console.WriteLine(match.Value);
                match = match.NextMatch();
            }

            regex = new Regex(@"\bparam\[\s*(['""])(.+?)\1\s*]");
            match = regex.Match(str);
            while (match.Success)
            {
                Console.WriteLine(match.Value);
                match = match.NextMatch();
            }

            Console.ReadKey();

        }
    }
}

编辑:更新了代码以匹配param['some-key']

编辑更新了代码以匹配param["some-key"]

【讨论】:

  • 这不会获取使用数组表示法访问的属性:例如参数['this-is-another-property']
  • 这解决了我的一个问题。您能否为我提供有关 param['this-is-another-property'] 等情况的正则表达式
  • 我再次更新了代码。该代码现在在所有情况下都有效。也可以看这里...stackoverflow.com/questions/32676695/…
【解决方案2】:

如果 param 是对象,那么你可以使用 jQuery each() 方法。 $.each() 是一个对象迭代器实用程序。

您可以使用 each() 方法循环访问该对象,如下所示

$.each( param, function( key, value ) {
     console.log(value);
    //Add your logic as per requirement
});

它将打印参数对象中可用的所有值(在控制台中)。

参考:jQuery each()

【讨论】:

  • 这样我需要在函数调用期间传递所有参数。这是主要问题。我必须计算我在这个函数中支持的参数数量。它在1000 。我不能一次传递所有参数.. 不同的参数组合是从不同的文件传递的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多