【问题标题】:Sorting array using Javascript function - Understanding使用 Javascript 函数对数组进行排序 - 理解
【发布时间】:2011-12-09 19:12:59
【问题描述】:

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

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

我的代码是:

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

我正在使用这个函数从声明的数组中获取新的随机数组值。

【问题讨论】:

    标签: javascript-framework


    【解决方案1】:

    array.sort() 有一个可选参数是一个排序函数,你可以传递一个函数引用来改变数组的顺序。

    也许这个页面会有所帮助http://www.javascriptkit.com/javatutors/arraysort.shtml

    【讨论】:

      【解决方案2】:

      此代码使用提供的 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 函数尝试比较数组中的两个值时,有一半的时间会说第一项小于第二项,而第二项的一半将小于第一项。由于这是在整个数组长度上完成的,因此项目会随机交换,整个数组也会变得随机。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-19
        • 1970-01-01
        • 2022-11-02
        • 2015-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多