一个关于Array的sort方法的问题。 实际上就是判断函数的返回值是正还是负,正常的用法是if(x>y) return 1;if(x<y)return -1;根据这个结果来排序的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢楼上的,不过我问的不是那个匿名函数的问题,而是sort是如何引用匿名函数进行比较,进而排序的;换句话说也就是sort比较的方法。 举个自定义的小例子:Array.prototype.max(func){ var n_max=0; for(var i=0;i<this.length;i++) if(func(this[i],this[n_max])>0) //两元素x,y进行比较,这是排序的基础,至于sort如何循环比较进行排序,应该是效率最高的吧, //估计和java里面的排序法一样,java或js相关文档里应该有介绍 n_max=i; return this[n_max];} myArray.sort(sortMethod)按降序排列数字 这样吧,谁能用算法,解释一下那个结果。hoho~ <script language="javascript">var myArray = [1,2,3,4,5,6];myArray.sort( function(x, y) { document.writeln(x+","+y+"<br>"); if (x % 2) return -1; if (x % 2 == 0) return 1; } );document.writeln(myArray);</script>不知楼主有没有学过排序的算法这样可以看看sort的比较顺序其实我个人认为讨论这个没有意义,只要学会怎样用就行如果要从小到大,可以在函数里加判断 iamif(IF) ( ) 信誉:100 Blog 2006-9-17 11:11:42 得分: 0 谢楼上的,不过我问的不是那个匿名函数的问题,而是sort是如何引用匿名函数进行比较,进而排序的;换句话说也就是sort比较的方法。===================这部分代码我好象在delphi里面也见过,大概意思说排序用什么方法用户可以不用管,但是用户要定义一个比较函数,用来定义两个对象之间以何种比较标准进行排序,一般数字的话无外乎就是比较大小,但是也有其他情况,比如楼主你这样的将偶数提前的规则.大概的伪代码可能是function sort(){ for(某一排序算法) { if(比较函数(x,y)==1) { x,y调换位置; } else { x,y位置不变; } }} 这个,就是告诉我们Array.sort如何实现排序控制。 我们根据自己的需要重写那个函数,就可以控制sort排序的规则。<script language="javascript"> var myArray = [6,2,4,3,5,1]; function aaa(x,y) { if (x > y) return -1; if (x < y) return 1; }function aaa(x,y) { if (x > y) return -1; if (x < y) return 1; } myArray.sort(aaa); document.writeln(myArray);</script> <script language="javascript"> var myArray = [6,2,4,3,5,1]; function aaa(x,y) { if (x > y) return -1; if (x < y) return 1; } function bbb(x,y) { if (x > y) return -1; if (x < y) return 1; } myArray.sort(aaa); //升序 document.writeln(myArray); myArray.sort(bbb); //降序 document.writeln(myArray);</script>自己体会吧。 <script language="javascript">var myArray = [6,2,4,3,5,1];function aaa(x,y){ if (x > y) return -1;if (x < y) return 1;} function bbb(x,y){ if (x > y) return 1;if (x < y) return -1;}myArray.sort(aaa); //降序document.writeln(myArray);myArray.sort(bbb); //升序document.writeln(myArray);</script>我个人理解就是要是返回为真就执行交换,要是假就不知道而,而执行交换的条件就是为真的条件 <script language="javascript">var myArray = [6,2,4,3,5,1];function aaa(x,y){ if (x > y) return -1;if (x < y) return 1;} function bbb(x,y){ if (x > y) return 1;if (x < y) return -1;}myArray.sort(aaa); //降序document.writeln(myArray);myArray.sort(bbb); //升序document.writeln(myArray);</script>我个人理解就是要是返回为真就执行交换,要是假就不交换,而执行交换的条件就是为真的条件 看了一下中间输出,看来x和y的选取还是有一定讲究的。偶去看看java的源代码。 求问。 !function 这样代表什么意思? 新人求教setInterval问题 求javascript treeview JSI2Alpha及JSA1beta 发布 这种效果如何实现呢!! 大家觉得前端构架师应该具备哪些技能和素质? 如何实现,默认图片是鲜艳,鼠标移到一张上别的图片全变暗,被移到的图片还是亮的 JavaScript有没有相当于asp里的request的命令啊? 正则替代 手机聊天界面,如何实现5分钟内的消息不在显示时间 正则表达式,给分~~~~~~~~~~ 问个简单的问题:blnParse=objupload.parseFormData()这句代码哪错了??? 谢谢!
Array.prototype.max(func){
var n_max=0;
for(var i=0;i<this.length;i++)
if(func(this[i],this[n_max])>0)
//两元素x,y进行比较,这是排序的基础,至于sort如何循环比较进行排序,应该是效率最高的吧,
//估计和java里面的排序法一样,java或js相关文档里应该有介绍
n_max=i;
return this[n_max];
}
var myArray = [1,2,3,4,5,6];
myArray.sort( function(x, y) {
document.writeln(x+","+y+"<br>");
if (x % 2)
return -1;
if (x % 2 == 0)
return 1;
}
);
document.writeln(myArray);
</script>
不知楼主有没有学过排序的算法
这样可以看看sort的比较顺序其实我个人认为讨论这个没有意义,只要学会怎样用就行
如果要从小到大,可以在函数里加判断
谢楼上的,不过我问的不是那个匿名函数的问题,而是sort是如何引用匿名函数进行比较,进而排序的;换句话说也就是sort比较的方法。
===================
这部分代码我好象在delphi里面也见过,大概意思说排序用什么方法用户可以不用管,但是
用户要定义一个比较函数,用来定义两个对象之间以何种比较标准进行排序,一般数字的话
无外乎就是比较大小,但是也有其他情况,比如楼主你这样的将偶数提前的规则.大概的伪代码可能是function sort()
{
for(某一排序算法)
{
if(比较函数(x,y)==1)
{
x,y调换位置;
}
else
{
x,y位置不变; }
}
}
<script language="javascript">
var myArray = [6,2,4,3,5,1];
function aaa(x,y)
{
if (x > y)
return -1;
if (x < y)
return 1;
}
function aaa(x,y)
{
if (x > y)
return -1;
if (x < y)
return 1;
} myArray.sort(aaa);
document.writeln(myArray);
</script>
<script language="javascript">
var myArray = [6,2,4,3,5,1];
function aaa(x,y)
{
if (x > y)
return -1;
if (x < y)
return 1;
}
function bbb(x,y)
{
if (x > y)
return -1;
if (x < y)
return 1;
} myArray.sort(aaa); //升序
document.writeln(myArray);
myArray.sort(bbb); //降序
document.writeln(myArray);
</script>自己体会吧。
var myArray = [6,2,4,3,5,1];
function aaa(x,y)
{
if (x > y)
return -1;
if (x < y)
return 1;
}
function bbb(x,y)
{
if (x > y)
return 1;
if (x < y)
return -1;
}myArray.sort(aaa); //降序
document.writeln(myArray);
myArray.sort(bbb); //升序
document.writeln(myArray);
</script>我个人理解就是要是返回为真就执行交换,要是假就不知道而,而执行交换的条件就是为真的条件
var myArray = [6,2,4,3,5,1];
function aaa(x,y)
{
if (x > y)
return -1;
if (x < y)
return 1;
}
function bbb(x,y)
{
if (x > y)
return 1;
if (x < y)
return -1;
}myArray.sort(aaa); //降序
document.writeln(myArray);
myArray.sort(bbb); //升序
document.writeln(myArray);
</script>我个人理解就是要是返回为真就执行交换,要是假就不交换,而执行交换的条件就是为真的条件