題目要求:給出一個對象值,裏面含有不少個子對象,每一個字對象又分別含有name 、score 、time屬性。最後要求設計一個方法,按時間從小到大排序輸出每一個分數大於60分的人的姓名和對應分數。spa
輸入對象舉例以下:設計
{ A:{ name: 'aaa', score: 60, time: 'Mon May 16 2016 18:48:34 GMT+0800 (中國標準時間)' }, B:{ name: 'bbb', score: 50, time: 'Mon May 16 2017 18:48:34 GMT+0800 (中國標準時間)' }, C:{ name: 'ccc', score: 90, time: 'Mon May 16 2018 18:48:34 GMT+0800 (中國標準時間)' }, D:{ name: 'ddd', score: 80, time: 'Mon May 16 2014 18:48:34 GMT+0800 (中國標準時間)' }, E:{ name: 'eee', score: 81, time: 'Mon May 15 2014 18:48:34 GMT+0800 (中國標準時間)' }, F:{ name: 'fff', score: 81, time: 'Mon May 15 2016 18:48:34 GMT+0800 (中國標準時間)' } ... }
方法1思路:先將分數爲60分及如下的子對象去掉,剩下的子對象再根據時間值得大小進行排序。注意,時間值須要經過Date.parse()方法轉換成毫秒數才能比較。code
function objSort(obj){ var arr = Object.keys(obj); var subArr = []; arr.forEach(function(item){ if(obj[item].score>60){ subArr.push(obj[item]); } }); // console.log(subArr); var res = subArr.sort(function(obj1, obj2){ return Date.parse(obj1.time) - Date.parse(obj2.time); }); // console.log(res); for(var i=0; i<res.length; i++){ console.log(res[i].name + ' ' + res[i].score); } } var object = { A:{ name: 'aaa', score: 60, time: 'Mon May 16 2016 18:48:34 GMT+0800 (中國標準時間)' }, B:{ name: 'bbb', score: 50, time: 'Mon May 16 2017 18:48:34 GMT+0800 (中國標準時間)' }, C:{ name: 'ccc', score: 90, time: 'Mon May 16 2018 18:48:34 GMT+0800 (中國標準時間)' }, D:{ name: 'ddd', score: 80, time: 'Mon May 16 2014 18:48:34 GMT+0800 (中國標準時間)' }, E:{ name: 'eee', score: 81, time: 'Mon May 15 2014 18:48:34 GMT+0800 (中國標準時間)' }, F:{ name: 'fff', score: 81, time: 'Mon May 15 2016 18:48:34 GMT+0800 (中國標準時間)' } } objSort(object); // eee 81 // ddd 80 // fff 81 // ccc 90
方法2:直接經過time屬性進行排序對象
function objSort(params){ return function(object1,object2){ return Date.parse(object1[params])-Date.parse(object2[params]); } } function init(obj){ var arr = []; for(item in obj){ if(parseInt(obj[item].score)>60){ arr.push(obj[item]); } } arr.sort(objSort('time')); for(var i=0; i<arr.length; i++){ console.log(arr[i].name + ' ' + arr[i].score); } } var object = { A:{ name: 'aaa', score: 60, time: 'Mon May 16 2016 18:48:34 GMT+0800 (中國標準時間)' }, B:{ name: 'bbb', score: 50, time: 'Mon May 16 2017 18:48:34 GMT+0800 (中國標準時間)' }, C:{ name: 'ccc', score: 90, time: 'Mon May 16 2018 18:48:34 GMT+0800 (中國標準時間)' }, D:{ name: 'ddd', score: 80, time: 'Mon May 16 2014 18:48:34 GMT+0800 (中國標準時間)' }, E:{ name: 'eee', score: 81, time: 'Mon May 15 2014 18:48:34 GMT+0800 (中國標準時間)' }, F:{ name: 'fff', score: 81, time: 'Mon May 15 2016 18:48:34 GMT+0800 (中國標準時間)' } } init(object);