要点:
1.理解函数作为参数和作为返回值,就是将函数的处理结果直接使用了,而没有进行用第三个变量进行接收而已。
2.js提供的sort冒泡排序算法是不稳定的,需要加一步比较两个对象的操作,同时想要进行降序排序只要将返回的值改变一下,即可改变升降排序,不需要重写。
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
function File(name,size,time){
this.name = name;
this.size = size;
this.time = time;
}
var f1 = new File("my heart is go on.mp4","2057M","2008-8-8");
var f2 = new File("you are best.mp4","5021M","2018-8-8");
var f3 = new File("can you hear me.mp4","3562M","2015-5-5");
var movie = [f1,f2,f3];
// 将三个电影文件加入数组中
function fn(attr){
return function getSort(obj1,obj2){
if(obj1[attr] > obj2[attr]){
return 1;
}else if(obj1[attr] == obj2[attr]){
return 0;
}else{
return -1;
}
}
// 函数作为返回值
}
movie.sort(fn("time"));
// 函数作为参数使用
// sort系统提供的冒泡排序不稳定,需要上面一步添加比较两个值的大小,这样也可以改变升序和降序
for(var i=0; i<movie.length; i++){
console.log(movie[i].name +"---"+ movie[i].size +"---"+ movie[i].time);
}
</script>
</body>
</html>
效果: