Javascript 需要对从服务器调用的对象数组进行排序
我有一个对象数组,可以提取并显示在页面上。然而,顺序一直在变化。我如何按固定顺序称呼他们Javascript 需要对从服务器调用的对象数组进行排序,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个对象数组,可以提取并显示在页面上。然而,顺序一直在变化。我如何按固定顺序称呼他们 function chatFetch(){ $.ajax({ url: "https://api.parse.com/1/classes/chats", dataType: "json", method: "GET", success: function(data){ $("ul"
function chatFetch(){
$.ajax({
url: "https://api.parse.com/1/classes/chats",
dataType: "json",
method: "GET",
success: function(data){
$("ul").empty();
for(var key in data) {
for(var i in data[key]){
console.log(data[key][i])
$(".messages").append("<li>"+data[key][i].text+"</li>");
}
}
}
})
}
但当我再次获取数组时,对象如下所示:
Object {
text: "RoboChat: Johnny 5 alive!",
username: "RoboChat",
createdAt: "2014-03-19T18:52:18.533Z",
updatedAt: "2014-03-19T18:52:18.533Z",
objectId: "xnRMkxJMX3"
}
理想情况下,我希望它们按照生成顺序进行排序。他们是否可能有随机密钥排序?我如何改变这一点,在我这边,而不是服务器端 如果
数据
是一个带有自定义比较函数的实际数组使用
data.sort(function(dataA,dataB){
if(dataA.someThing > dataB.someThing){
return 1;
} else if(dataA.someThing < dataB.someThing){
return -1;
} else {
return 0;
}
};
如果您不需要任何特殊类型的排序(即字典排序),那么只需调用sort()
,而不需要任何参数
编辑:
如果您想在createdAt
data.sort(function(msgA,msgB){
var msgACreate = new Date(msgA.createdAt),
msgBCreate = new Date(msgB.createdAt);
if(msgACreate > msgBCreate){
return 1;
} else if(msgACreate < msgBCreate){
return -1;
} else {
return 0;
}
});
你想怎样分类?按字母顺序你能发布你的对象数组吗?通过迭代方法,它看起来都像对象,正如@A.Wolff所指出的,对象中没有顺序,因此它从来都不一样
data[key].sort(...)
data.sort(function(msgA,msgB){
var msgACreate = new Date(msgA.createdAt),
msgBCreate = new Date(msgB.createdAt);
if(msgACreate > msgBCreate){
return 1;
} else if(msgACreate < msgBCreate){
return -1;
} else {
return 0;
}
});
[{
text: "RoboChat: Johnny 5 alive!",
username: "RoboChat",
createdAt: "2014-03-19T18:52:18.533Z",
updatedAt: "2014-03-19T18:52:18.533Z",
objectId: "xnRMkxJMX3"
}, {
text: "RoboChat: Johnny 5 alive!",
username: "RoboChat",
createdAt: "2014-03-19T18:51:28.600Z",
updatedAt: "2014-03-19T18:51:28.600Z",
objectId: "NKh7VaWY5X"
}]