qhnw.net
当前位置:首页 >> js数组函数sort >>

js数组函数sort

sort() 方法用于对数组的元素进行排序.语法: arrayObject.sort(sortby)参数:sortby 可选.规定排序顺序.必须是函数.说明:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序

譬如: var a=[1,5,3,7]; a.sort(function(a, b) { return b-a});//从大到小排列 那如果复杂点的顺序应该如何写这个比较函数呢. 对于比较函数function f(a,b){} ,若返回正数,则说明a和b需要交换,否则不交换.所以我们可以通通根据下

对于比较函数function f(a,b){} ,若返回正数,则说明a和b需要交换,否则不交换.所以我们可以通通根据下面的格式去写比较函数: function f(a, b) { if () { return 1; } return -1; }

比较函数的参数来 v1 和 v2 代表数组里的两个元素如果 v1 小于 v2,排源序后的数组 v1 在 v2 前面,此时返回一个bai负数 (即上面的 return -1)如果 v1 等于 v2,du排序后两者位置不变,此时返回 0 (即上面的 return 0)如果 v1 大于 v2,排序后 v1 在v2 后面, 返回一个正数 (即上面的 return 1)//比较函数一般简zhi写成:arr.sort( function(a,b){ return a-b // 升序} );arr.sort( function(a,b){ return b-a // 降序} );// 对应上面的解释好好想下dao,不难理解为什么这样写

r.sort(function ma(a,b){if(a<b){return -1;}if(a>b){return 1; }return 0; });

有定义:myArray2[4]=""时,myArray2[4]总是排在最前 若没有定义myArray2[4],则未定义的总是排在最后.排序时,按照null的ascII排列,我就不是很清楚了.

做一个简单的程序来看到排序的过程://升序排列function numAsc(a, b) { console.log(a, b); return a - b; // a > b 就交换位置}//降序排列function numDesc(a, b) { console.log(a, b); return b - a; // a < b 就交换位置}var aTest = [2,3,1,4,5];console.log('asc', aTest.sort(numAsc));console.log('desc', aTest.sort(numDesc));以上程序需要 Firefox + FireBug .(IE8 打开调试器也可以)

compare只是返回X与Y之间的差而已sort是用来给数组排序的.X-Y必须返回一个负数,0或正数

sort函数执行时,会依次循环把数组里的两个数传递给函数f,这时候f的参数a和b就分别是传入的两个数,然后分别求出a和b除以2的余数(实际上就是判断a和b是奇数还是偶数,0是偶数,1是奇数).如果a是偶数,函数f就返回1(或其他任何大于0的数),如果a是奇数且b是偶数就返回-1(或其他任何小于0的数).sort函数根据f的返回值来对两个数进行排序,如果是大于0的数,就把两个数的值对调,如果是0或小于0的数则不做任何处理.这样的话,当数组中的所有元素都两两处理完毕后,最终就会形成奇数在前偶数在后的情况了.

arrayobj.sort(sortfunction) 参数 arrayObj 必选项.任意 Array 对象. sortFunction 可选项.是用来确定元素顺序的函数的名称.如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列. 说明 sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象. 如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一: 负值,如果所传递的第一个参数比第二个参数小. 零,如果两个参数相等. 正值,如果第一个参数比第二个参数大.

网站首页 | 网站地图
All rights reserved Powered by www.qhnw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com