一尘不染

以随机顺序对数组排序

algorithm

我试图了解如何以随机顺序对数组进行排序。因此,我发现以下代码:

var as = ["max","jack","sam"];

var s = as.sort(func);



function func(a, b) {

  return 0.5 - Math.random();

}



console.log(s);

我的主要问题是为什么他们使用 0.5而不是另一个数字 ?以及 它是如何工作的,
请尝试简化它。我是javascript的新手,我正在努力解决这些问题


阅读 287

收藏
2020-07-28

共1个答案

一尘不染

你用过

var as = ["max","jack","sam"];  
var s = as.sort(func);

function func(a, b) {  
  return 0.5 - Math.random();
}

console.log(s);

这里最重要的as.sort(func)
func(a,b)将返回范围内的值[-0.5,0.5]

因为此函数返回0.5 - Math.random()并且Math.random()将返回在范围内的float值[0,1]
这样您的func返回值将在的范围内[-0.5,0.5]

这意味着将设置排序顺序increasedecrease。这是随机的。所以你的结果将是随机的

var as = ["max","jack","sam"];  
var s = as.sort(func);

function func(a, b) {  
  return Math.random();
}

console.log(s);


var as = ["max","jack","sam"];  
var s = as.sort(func);

function func(a, b) {  
  return 0 - Math.random();
}

console.log(s);


var as = ["max","jack","sam"];  
var s = as.sort(func);

function func(a, b) {  
  return 0.5 - Math.random();
}

console.log(s);
2020-07-28