Javascript 在React Native中对对象的对象进行排序

Javascript 在React Native中对对象的对象进行排序,javascript,react-native,Javascript,React Native,我想对对象进行排序,对象在中,并按日期排序。我从一个API获取对象,该API提供如下API: { "2529354": { "id": "2529354", "name": "Burton Albion-Barnsley", "tournament_stageFK": "850172", "startdate": "2017-10-31T19:45:00+00:00", "status_type": "notstarted", "status_

我想对对象进行排序,对象在中,并按日期排序。我从一个API获取对象,该API提供如下API:

{
  "2529354": {
    "id": "2529354",
    "name": "Burton Albion-Barnsley",
    "tournament_stageFK": "850172",
    "startdate": "2017-10-31T19:45:00+00:00",
    "status_type": "notstarted",
    "status_descFK": "1",
    "n": "1",
    "ut": "2017-06-21T10:32:10+00:00",
    "tournamentFK": "11549",
    "tournament_templateFK": "48",
    "sportFK": "1",
    "tournament_stage_name": "Championship",
    "tournament_name": "2017/2018",
    "tournament_template_name": "England 2",
    "sport_name": "Soccer"
  },
  "2529355": {
    "id": "2529355",
    "name": "Cardiff City-Ipswich Town",
    "tournament_stageFK": "850172",
    "startdate": "2017-10-31T20:45:00+00:00",
    "status_type": "notstarted",
    "status_descFK": "1",
    "n": "1",
    "ut": "2017-06-21T10:32:10+00:00",
    "tournamentFK": "11549",
    "tournament_templateFK": "48",
    "sportFK": "1",
    "tournament_stage_name": "Championship",
    "tournament_name": "2017/2018",
    "tournament_template_name": "England 2",
    "sport_name": "Soccer"
  },
  "2529364": {
    "id": "2529364",
    "name": "Reading-Nottingham Forest",
    "tournament_stageFK": "850172",
    "startdate": "2017-10-31T19:00:00+00:00",
    "status_type": "notstarted",
    "status_descFK": "1",
    "n": "1",
    "ut": "2017-06-21T10:32:11+00:00",
    "tournamentFK": "11549",
    "tournament_templateFK": "48",
    "sportFK": "1",
    "tournament_stage_name": "Championship",
    "tournament_name": "2017/2018",
    "tournament_template_name": "England 2",
    "sport_name": "Soccer"
    }
};
可能很难注意到,但这3个对象的起始日期不同。 API提供了17个对象,或者在这种情况下的游戏,但它们并不有序。我已经尝试过使用sort函数,但由于它是用于数组的,所以它实际上不起作用


是否可以使用Object.keys(Object)或类似的东西对其进行排序?

由于属性是键,因此无法对该对象进行排序。您可以将单个对象推送到数组中,并对其进行排序

var数据={
"2529354": {
“id”:“2529354”,
“姓名”:“伯顿·阿尔比恩·巴恩斯利”,
“起始日期”:“2017-10-31T19:45:00+00:00”
},
"2529355": {
“id”:“2529355”,
“名称”:“加的夫市伊普斯维奇镇”,
“起始日期”:“2017-10-31T20:45:00+00:00”
},
"2529364": {
“id”:“2529364”,
“名称”:“阅读诺丁汉森林”,
“起始日期”:“2017-10-31T19:00:00+00:00”
}
};
var dataArray=[];
用于(数据中的var i){
push(数据[i]);
}
dataArray.sort(函数(x,y){
var xDate=新日期(x.开始日期);
var yDate=新日期(y.起始日期);
如果(xDateyDate)返回1
否则返回0;
});

log(数据数组)无法对该对象进行排序,因为属性是键,因此不可排序。您可以将单个对象推送到数组中,并对其进行排序

var数据={
"2529354": {
“id”:“2529354”,
“姓名”:“伯顿·阿尔比恩·巴恩斯利”,
“起始日期”:“2017-10-31T19:45:00+00:00”
},
"2529355": {
“id”:“2529355”,
“名称”:“加的夫市伊普斯维奇镇”,
“起始日期”:“2017-10-31T20:45:00+00:00”
},
"2529364": {
“id”:“2529364”,
“名称”:“阅读诺丁汉森林”,
“起始日期”:“2017-10-31T19:00:00+00:00”
}
};
var dataArray=[];
用于(数据中的var i){
push(数据[i]);
}
dataArray.sort(函数(x,y){
var xDate=新日期(x.开始日期);
var yDate=新日期(y.起始日期);
如果(xDateyDate)返回1
否则返回0;
});

log(数据数组)您可以计算出键的顺序并将它们放入如下数组:

var sortedKeys = Object.keys(data).sort((a, b) => {
    return new Date(data[b].startdate) - new Date(data[a].startdate);
});
然后您可以按如下顺序访问数据

sortedKeys.each(function (key) {
    // do something with data[key] 
});

您可以计算出键的顺序,并将它们放入如下数组:

var sortedKeys = Object.keys(data).sort((a, b) => {
    return new Date(data[b].startdate) - new Date(data[a].startdate);
});
然后您可以按如下顺序访问数据

sortedKeys.each(function (key) {
    // do something with data[key] 
});

排序对象的不朽问题。否,是,在本例中是否,因为您有整数,默认情况下按升序排序。排序对象的不朽问题。不,是的,在这个例子中是不,因为你有整数,它们默认按升序排序。好的,很高兴知道。谢谢你的解决方案,这很有效。没问题-很乐意帮忙:)好的,很高兴知道。感谢您的解决方案,这非常有效。没问题-很乐意帮助:)