將電影檔案排序—函式作為引數和返回值,理解js提供的sort氣泡排序
阿新 • • 發佈:2018-12-09
要點:
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>
效果: