2016-03-18 63 views
3

大家好我知道这个问题有几次被问到,但我没有得到确切的答案我的问题。排序对象星期日到星期六在javascript

// I have array of object like this 
 
data=[ 
 
     // "sunday": 1, // << sunday is first day of week  
 
     {DayOfWeek:"Saturday", TotalCount:30}, 
 
     {DayOfWeek:"Friday", TotalCount:10}, 
 
     {DayOfWeek:"Monday", TotalCount:23}, 
 
     {DayOfWeek:"Sunday", TotalCount:18}, 
 
     {DayOfWeek:"Wednesday", TotalCount:20}   
 
    ]; 
 

 

 
// I need sorted like this: 
 
data=[ 
 
     // "sunday": 1, // << sunday is first day of week 
 
     {DayOfWeek:"Sunday", TotalCount:18}, 
 
     {DayOfWeek:"Monday", TotalCount:23}, 
 
     {DayOfWeek:"Wednesday", TotalCount:20}, 
 
     {DayOfWeek:"Friday", TotalCount:10}, 
 
     {DayOfWeek:"Saturday", TotalCount:30} 
 
    ];

我想这一个,但我anble得到预期的结果。 它通过satring字母表给出mi排序数组,如

星期五,星期六。

变种分拣= {// “星期日”:1,// < <星期日是周 “星期日” 的第一天:1, “星期一”:2, “星期二”:3, “星期三”:4, “星期四”:5, “星期五”:6, “星期六”:7 }

var result= data.sort(function sortByDay(a, b) { 
    var day1 = a.DayOfWeek.toLowerCase(); 
    var day2 = b.DayOfWeek.toLowerCase(); 
    return sorter[day1] > sorter[day2]; 
    }); 

请帮助我,感谢中推进

回答

6

您可以为订单对象排序呢,因为你已经有了,但你需要作为排序回调返回值的差额

return order[a.DayOfWeek] - order[b.DayOfWeek]; 

var data = [{ DayOfWeek: "Saturday", TotalCount: 30 }, { DayOfWeek: "Friday", TotalCount: 10 }, { DayOfWeek: "Monday", TotalCount: 23 }, { DayOfWeek: "Sunday", TotalCount: 18 }, { DayOfWeek: "Wednesday", TotalCount: 20 }], 
 
    order = { Sunday: 1, Monday: 2, Tuesday: 3, Wednesday: 4, Thursday: 5, Friday: 6, Saturday: 7 }; 
 

 
data.sort(function (a, b) { 
 
    return order[a.DayOfWeek] - order[b.DayOfWeek]; 
 
}); 
 
document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');

+1

谢谢@nina它工作得很好,非常感谢 –

1

有没有任何内置的功能,但它不应该太难做一个解决方案。这里有一个例子:

function s(a,b){ 
    return daysOfWeek.indexOf(a) - daysOfWeek.indexOf(b); // basic sort function that compares the indexes of the two days 
} 
var inputArray = ["Saturday", "Monday", "Sunday", "Tuesday"]; // input 
var daysOfWeek = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; // array of days sorted 
console.log(inputArray.sort(s)); // output 
相关问题