相关疑难解决方法(0)

没有递归函数调用的排列

要求:生成集合的所有可能组合的算法,无需重复,或递归调用函数以返回结果.

大多数,如果不是所有的答案都在JavaScript中的Permutations提供?从循环或其他函数中递归调用函数以返回结果.

循环内的递归函数调用示例

function p(a, b, res) {
  var b = b || [], res = res || [], len = a.length;
  if (!len) 
    res.push(b)
  else 
    for (var i = 0; i < len 
         // recursive call to `p` here
       ; p(a.slice(0, i).concat(a.slice(i + 1, len)), b.concat(a[i]), res)
       , i++
    );
  return res
}

p(["a", "b", "c"]);
Run Code Online (Sandbox Code Playgroud)

当前的问题试图在线性过程中创建给定的排列,依赖于先前的排列.

例如,给定一个数组

var arr = ["a", "b", "c"];
Run Code Online (Sandbox Code Playgroud)

确定可能的排列总数

for (var len = 1, i = k …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm permutation

29
推荐指数
6
解决办法
4479
查看次数

更改CSS3转换而不触发重新计算样式?

试图在60FPS动画一个在屏幕上具有绝对定位的元素我注意到大多数CPU时间被使用recaculateStyles.

我可以在element.style.transform不触发重新计算样式的情况下更改属性吗?

目前,我改变,像这样的位置:el.style.transform = 'translate3d(${x}px, ${y}px, 0px)';

这是一个演示:http://jsfiddle.net/pLtvxv41/您可以使用Google Chrome性能开发工具查看recalculateStyle功能的用法.

这可以更有效地改变吗?

在此输入图像描述

javascript css browser performance css3

12
推荐指数
1
解决办法
1138
查看次数

有没有有效的方法在javascript中使用`__proto__`或`setPrototypeOf()`?

MDN对于修改代码中的原型有一个巨大的可怕警告:

根据[[Prototype]]现代JavaScript引擎如何在每个浏览器和JavaScript引擎中优化属性访问,非常慢的操作,改变对象的性质.对改变继承的性能的影响是微妙和遥远的,并不仅仅局限于在Object.setPrototypeOf(...)语句中花费的时间,而是可以扩展到任何可以访问任何[[Prototype]]已被更改的对象的代码 .如果您关心性能,则应避免设置[[Prototype]]对象.而是[[Prototype]]使用所需的使用创建一个新对象Object.create().

- MDN> JavaScript> Object.setPrototypeOf()

我想知道是否有任何情况你可以修改对象的原型而不会导致级联的优化效果,从而破坏程序的性能.好像应该有.例如,如果您只是在创建对象之后(以及在其他任何东西使用之前)修改原型.但我想这是依赖引擎的.

那么有谁知道是否有有效的方法来修改对象的原型?

编辑:这个问题的动机来自于创建实际继承的对象的愿望Function.我知道如何做到这一点的唯一方法是修改函数的原型.请参阅Raynos答案的最底部:javascript类继承自Function类

javascript inheritance prototype prototypal-inheritance prototype-chain

10
推荐指数
1
解决办法
387
查看次数

生成所有大小为n的二进制字符串到布尔数组的最快方法?

例如,如果我想要所有长度为3的二进制字符串,我可以简单地将它们声明为:

boolean[] str1 = {0,0,0};
boolean[] str2 = {0,0,1};
boolean[] str3 = {0,1,0};
boolean[] str4 = {0,1,1};
boolean[] str5 = {1,0,0};
boolean[] str6 = {1,0,1};
boolean[] str7 = {1,1,0};
boolean[] str8 = {1,1,1};
Run Code Online (Sandbox Code Playgroud)

将所有可能的长度为N的二进制字符串生成到布尔数组中的最有效方法是什么?

我不一定需要的最有效的方法,只有一个那是相当有效的,并容易让我多线程.

编辑:我应该注意,如果重要的话,我将把它们全部存储在ArrayList中.

java binary boolean

9
推荐指数
1
解决办法
9638
查看次数

是否可以制作正则表达式来确定函数的返回类型?

鉴于以下功能的文字:

function f3() {
  return Math.random() > 0.5 ? Promise.resolve(true): 'naaah'
}
Run Code Online (Sandbox Code Playgroud)

是否可以编译正则表达式来确定f3()调用的返回类型,而不实际调用该函数?

javascript regex

2
推荐指数
2
解决办法
388
查看次数