使用Javascript函数排序数组 - 理解

时间:2011-10-18 05:08:09

标签: javascript-framework

我决定从数组中获取洗牌值。因为我使用这个功能,我从网上得到它,它工作正常。但我不知道,它是如何运作的......

任何人都可以帮助我理解这一点吗?

我的代码是:

  function rand(ar){
    return 0.5-Math.random();
}
var ar = [5,10,15,20,25]
ar.sort(rand);
console.log(ar)

我正在使用此函数从声明的数据中获取新的混洗数组值。

2 个答案:

答案 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