我正在使用ajax,当我得到我的响应(这是一个对象)时,它给了我奇怪的输出。
所以,在"成功"方法,我尝试了console.log(res),这就是我所拥有的:
Object {new_month: "Semptember", days_calender: Object}
然后,我尝试console.log(res [' days_calender']);这是输出:
Object {10: "n", 11: "n", 12: "n", 13: "n", 14: "n", 15: "n", 16: "n", 17: "n", 18: "n", 19: "n", 20: "n", 21: "n", 22: "n", 23: "n", 24: "n", 25: "n", 26: "n", 27: "n", 28: "n", 29: "n", 30: "n", 01: "n", 02: "n", 03: "n", 04: "n", 05: "n"…}
问题是我需要使用方法each()创建元素并将其附加到div #calender,但是当我这样做时,第一个案例得到" 10",第二个案例" ; 11"等等。
有没有办法让我的对象排序?
dataType: 'json',
success: function(res){
console.log(res);
console.log(res['days_calender']);
$.each(res['days_calender'], function(key, val) {
updateCalender(key, val);
});
我的updateCalender函数:
function updateCalender(day, activity)
{
var li = document.createElement("li");
$('#calender ul').append(li);
var a = document.createElement("a");
a.setAttribute('href', '/activities/'+day);
a.innerHTML = day;
li.appendChild(a);
}
编辑:
这就是它最初的样子:
Array
(
[new_month] => September
[days_calender] => Array
(
[01] => n
[02] => n
[03] => n
[04] => n
[05] => y
[06] => y
[07] => n
[08] => n
[09] => y
[10] => n
[11] => n
[12] => n
[13] => n
[14] => n
[15] => n
[16] => n
[17] => n
[18] => n
[19] => n
[20] => n
[21] => n
[22] => n
[23] => n
[24] => n
[25] => n
[26] => n
[27] => n
[28] => n
[29] => n
[30] => n
)
)
答案 0 :(得分:1)
您可以在数字上对键进行排序
var res = {'days_calender':{10: "n", 11: "n", 12: "n", 13: "n", 14: "n", 15: "n", 16: "n", 17: "n", 18: "n", 19: "n", 20: "n", 21: "n", 22: "n", 23: "n", 24: "n", 25: "n", 26: "n", 27: "n", 28: "n", 29: "n", 30: "n", 01: "n", 02: "n", 03: "n", 04: "n", 05: "n"}};
var array = $.map(res['days_calender'], function(value, index) { // convert to array of objects
return {day:index, activity:value};
});
array.sort(function(a,b){ // sort numerically by day
return parseInt(a.day) - parseInt(b.day);
});
$.each(array, function(key, val) {
updateCalender(val.day, val.activity);
});