1. 程式人生 > >將電影檔案排序—函式作為引數和返回值,理解js提供的sort氣泡排序

將電影檔案排序—函式作為引數和返回值,理解js提供的sort氣泡排序

要點:

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>

 

效果: