【问题标题】:Select random method选择随机方法
【发布时间】:2015-08-17 15:29:20
【问题描述】:

我有我的 JavaScript 代码和一个包含许多不同功能(几百个)的文件。我想创建一个新函数(相同文件或不同文件),它将随机执行现有函数之一。

其中一个问题是没有可以识别的命名模式,我需要让它从文件中选择任何功能。也许通过识别一行并检查关键字函数是否存在?

由于函数的数量和需要添加更多,数组是不可能的。我需要将该函数视为未知变量。

【问题讨论】:

  • 现有代码模块中的功能是如何组织的?你能修改现有的代码吗?
  • 我确实有能力编辑代码,但是有超过 300 个函数,最好找到一种不编辑它们的方法。 “如何在 JavaScript 中运行随机选择的函数?”不同之处在于它使用函数数组并从数组中随机选择。将所有 300 多个函数放入一个数组中是不切实际的,而且最终还会添加更多需要考虑的函数。
  • 你能提供你如何指定函数的sn-p
  • 可供选择的函数大多以字母顺序显示,命名为字母数字,名称均以“to”开头,但之后没有可识别的模式。例如)
    toApple = function
    toBunny = function
    toCar = function
    toDirtySocks = function
    ...

标签: javascript function random


【解决方案1】:

一般来说,最简单/最干净的方法是将所有功能存储在对象中,例如:

var myFunctions: {
    fn1: function() {},
    fn2: function() {},
    fn3: function() {}
    // ...
}

然后您可以执行var fnNames = Object.keys(myFunctions),它将为您提供所有函数名称作为数组。

那你可以这样做:myFunctions[fnNames[Math.floor(Math.random()*fnNames.length)]]

或者更长更简洁的版本:

var randomFunctionNameIndex = Math.floor(Math.random()*fnNames.length);
var randomFunctionName = fnNames[randomFunctionNameIndex];
var randomFunction = myFunctions[randomFunctionName];

var result = randomFunction();

【讨论】:

  • 列出每个函数是不切实际的,我喜欢这个想法,但它必须让函数作为未知变量
  • 这个函数还在某个地方,比如全局上下文 (window),你可以从那里获取密钥,但是会有更多的密钥,你的上下文是什么?
  • 不确定问题是什么“上下文”?有没有办法在一个文件中提取所有功能的所有密钥,而不是另一个文件?
  • 它使用node.js在浏览器中运行
  • 那没有多大意义?你的意思是浏览器化?将 sn-p 放在 plunker 或 jsfiddle 或某处
猜你喜欢
  • 1970-01-01
  • 2012-01-30
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 2012-04-12
  • 1970-01-01
相关资源
最近更新 更多