相关疑难解决方法(0)

在JavaScript中生成两个数字之间的随机数

有没有办法在JavaScript中生成指定范围内的随机数(例如1到6:1,2,3,4,5或6)?

javascript random

1635
推荐指数
22
解决办法
132万
查看次数

在Javascript中做什么~~("双波浪")?

我今天正在查看一个在线游戏物理库,并遇到了~~运算符.我知道单个〜是一个按位NOT,是否会使~~不是NOT,它会返回相同的值,不是吗?

javascript

197
推荐指数
7
解决办法
2万
查看次数

JavaScript中的随机字母数字字符串?

在JavaScript中生成随机字母数字(大写,小写和数字)字符串以用作可能唯一标识符的最短方式(在合理范围内)是什么?

javascript random

189
推荐指数
12
解决办法
21万
查看次数

如何对浮点数执行按位运算

我试过这个:

float a = 1.4123;
a = a & (1 << 3);
Run Code Online (Sandbox Code Playgroud)

我得到一个编译错误,说操作数&不能是float类型.

当我做:

float a = 1.4123;
a = (int)a & (1 << 3);
Run Code Online (Sandbox Code Playgroud)

我让程序运行.唯一的事情是按位操作是在舍入后获得的数字的整数表示上完成的.

以下也是不允许的.

float a = 1.4123;
a = (void*)a & (1 << 3);
Run Code Online (Sandbox Code Playgroud)

我不明白为什么int可以投,void*但不是float.

我这样做是为了解决Stack Overflow问题中描述的问题如何使用遗传算法求解线性方程?.

c++ floating-point bitwise-operators genetic-algorithm

45
推荐指数
5
解决办法
6万
查看次数

运算符| =在JavaScript中做什么?

我在JS项目中找到了以下代码:

var a = new Array();
a[0] = 0;
for (var b = 0; b < 10; b++) {
  a[0] |= b; 
}
Run Code Online (Sandbox Code Playgroud)

|=for循环体内有什么作用?

代码示例是可疑的,但V8 已经在这里提供了一个改进性能的示例.

更新的示例

上面的例子相当于var a = [15];大多数意图和目的.|=操作员的一个更现实的例子是在单个变量中设置二进制标志,例如在权限对象上:

//Set up permission masks
var PERMISSION_1_MASK = parseInt('0001',2);
var PERMISSION_2_MASK = parseInt('0010',2);
..

//Set up permissions
userPermissions = 0;
userPermissions |= hasPermissionOne && PERMISSION_1_MASK;
userPermissions |= hasPermissionTwo && PERMISSION_2_MASK;
..

//Use permissions
if(userPermissions & PERMISSION_1_MASK){
    ..//Do stuff only allowed by permission 1 …
Run Code Online (Sandbox Code Playgroud)

javascript operator-keyword

41
推荐指数
4
解决办法
8052
查看次数

~~ vs parseInt?

可能重复:
JavaScript中的"双波浪"(~~)运算符是什么?

D3教程提供了一个产生随机序列的函数:

var t = 1297110663, // start time (seconds since epoch)
    v = 70, // start value (subscribers)
    data = d3.range(33).map(next); // starting dataset

function next() {
  return {
    time: ++t,
    value: v = ~~Math.max(10, Math.min(90, v + 10 * (Math.random() - .5)))
  };
}
Run Code Online (Sandbox Code Playgroud)

注意~~(tilda tilda):

    value: v = ~~Math.max(10, Math.min(90, v + 10 * (Math.random() - .5)))
Run Code Online (Sandbox Code Playgroud)

从在javascript终端中玩游戏,我看到:

~~1
1
~~-1
-1
~~-1.3
-1
parseInt(5)
5
parseInt(-5)
-5
parseInt(-5.3)
-5
parseInt(5.3)
5
Run Code Online (Sandbox Code Playgroud)

既然~~和parseInt似乎是等价的,那么使用parseInt的理由是什么?

javascript

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

Javascript性能:reduce()vs for-loop

我正在尝试这个Codewars挑战,问题涉及找到一个数的除数,然后计算这些除数的平方和.我找到了解决这个问题的两种方法.

第一种方法是基于另一个关于找到所有除数之和的Stackoverflow问题,并且最初看起来很聪明:

function divisorsSquared(n) {
  // create a numeric sequence and then reduce it
  return [...Array(n+1).keys()].slice(1)
   .reduce((sum, num)=>sum+(!(n % (num)) && Math.pow(num,2)), 0);
}
Run Code Online (Sandbox Code Playgroud)

我使用的第二种方法是使用简单的for循环:

function divisorsSquared(n) {
  var sum = 0;
  for(var i = 1; i<= n; i++){
     if(n % i === 0) sum += Math.pow(i,2); 
  }
  return sum;
}
Run Code Online (Sandbox Code Playgroud)

现在我注意到第一种方法明显慢于第二种方法,快速jsperf测试证实了这一点.

我的问题是:为什么第一种方法如此慢,哪种方法在生产代码中更可取?

在Codewars上我注意到,对于许多挑战,使用类似的数组方法有一些聪明的单行解决方案.作为一个初学者,即使性能更差,这些解决方案可能被认为是比for循环更好的做法吗?

javascript arrays performance

12
推荐指数
3
解决办法
5006
查看次数

在JavaScript/node.js中做什么?

可能重复:
JavaScript中的"双波浪"(~~)运算符是什么?

我在node.js库的源代码中找到了这段代码.~~input变量有什么影响?

inArray[3] = ~~input;
Run Code Online (Sandbox Code Playgroud)

它还以其他方式使用:

return ~~ ((a - b) / 864e5 / 7 + 1.5);
Run Code Online (Sandbox Code Playgroud)

javascript node.js

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

在一个条件下检查NaN,null和> = 0

我有一个变种;

它的价值可以 NaN, null and any +ve/-ve number including 0.

我需要一个过滤掉a的所有值的条件,只有> = 0的值在if条件下产生一个真值.

实现这一目标的最佳方法是什么,我不希望使用3种不同的条件 ||

javascript jquery

8
推荐指数
2
解决办法
1万
查看次数

在javascript中将float转换为int的最快方法?

让我说我有x = 12.345.在javascript中,哪个函数floatToInt(x)有最快的运行时间floatToInt(12.345)返回12

javascript performance casting numbers

8
推荐指数
4
解决办法
8242
查看次数