我决定从数组中获取洗牌值。因为我使用这个功能,我从网上得到它,它工作正常。但我不知道,它是如何运作的......
任何人都可以帮助我理解这一点吗?
我的代码是:
function rand(ar){
return 0.5-Math.random();
}
var ar = [5,10,15,20,25]
ar.sort(rand);
console.log(ar)
我正在使用此函数从声明的数据中获取新的混洗数组值。
答案 0 :(得分:1)
此代码使用提供的rand
函数作为Array.Sort
方法(http://msdn.microsoft.com/en-us/library/4b4fbfhk(VS.85).aspx)的比较运算符。由于Math.random(http://msdn.microsoft.com/en-us/library/41336409.aspx)函数返回从0(包括)到1(不包括)的值,因此rand
函数将返回从0.5(包括)到-0.5(不包括)的值。
通常,提供给Sort
方法的sortFunction需要2个被比较的参数。 sortFunction比较它们并返回一个值,意思是:
当sort
方法运行时,它使用此比较来确定哪些数组值应该先于其他数组值。
对于代码,rand
函数的返回值是随机的,与数据无关。这意味着,每当sort
函数尝试比较数组中的两个值时,一半时间它会说第一项小于第二项,而第二项的一半将小于第一项。由于这是在数组的整个长度上完成的,所以项目随机交换,整个数组变得随机化。
答案 1 :(得分:0)
array.sort()有一个可选参数,它是一个排序函数,你可以传递一个函数引用来改变数组的顺序。
也许这个页面可以提供帮助http://www.javascriptkit.com/javatutors/arraysort.shtml