为了账号安全,请及时绑定邮箱和手机立即绑定

求问一个数组sort方法的问题

求问一个数组sort方法的问题

Beckybei 2015-10-13 10:01:32
这个例子是我在网上看到的例子:<script type="text/javascript"> var objectList2 = new Array(); function WorkMate(name,age){ this.name=name; var _age=age; this.age=function(){ //我实在是没有看懂这里为什么要添加这样一个方法if(!arguments) { //如果没有实参传入_age=arguments[0];} //那-age这个变量就被赋值为实参的第一个else { return _age;} } } //否则返回-age这个变量objectList2.push(new WorkMate('jack',20)); objectList2.push(new WorkMate('tony',25)); objectList2.push(new WorkMate('stone',26)); objectList2.push(new WorkMate('mandy',23)); objectList2.sort(function(a,b){ return a.age()-b.age(); }); for(var i=0;i<objectList2.length;i++){ document.writeln('<br />age:'+objectList2[i].age()+' name:'+objectList2[i].name); } </script>当中这段我备注的我不知道我理解的对吗 ,麻烦大神帮我看一下。我想问一下这个方法到底有什么用呢?谢谢
查看完整描述

1 回答

已采纳
?
pardon110

TA贡献1038条经验 获得超227个赞

简而言之,objectList2是一个由构造函数WorkMate生成的实例组成的数组。sort(fn)会按照函数定义的规则进行排序且改变了原有数组

sort()对数组的引用。请注意,数组在原数组上进行排序,并不会生成副本。

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

若 a 等于 b,则返回 0。

若 a 大于 b,则返回一个大于 0 的值。


查看完整回答
反对 回复 2015-10-13
  • 1 回答
  • 0 关注
  • 1547 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信