我有一组数据,可通过道具查询结果。我可以获取数据,但是无法对其进行排序。我希望使用MyTeam的所有数据首先出现。

但是,当我将其加载到浏览器中时,会得到不同的结果。

在Safari中,数据列表MyTeam是数组中的第二个元素

在Chrome中,数据将MyTeam列为第三个元素,但是每当我与它们交互(通过onClick方法)时,数据就会以不同的顺序交换。

如果我没有.sort()方法,那么一切都将保持不变,并且没有任何变化。

有合适的方法对数组进行排序吗?

    var gameList = this.props.data.sort(function(game) {
        return (game.homeTeam == 'MyTeam' || game.awayTeam == 'MyTeam') ? 0 : 1;
    }).map(function(game, i) {
       //console.log(game.homeTeam + ' ' + game.awayTeam);
       });

最佳答案

Array#sort比较数组的两个项目。您的compare函数必须有两个参数。我建议以下内容:

var gameList = this.props.data.sort(function(a, b) {
    var matchA = a.homeTeam === 'MyTeam' || a.awayTeam === 'MyTeam';
    var matchB = b.homeTeam === 'MyTeam' || b.awayTeam === 'MyTeam';

    // This will return
    // -1 if matchA is true and matchB is false
    //  0 if matchA and matchB are both true or both false
    //  1 if matchA is false and matchB is true
    return (matchB ? 1 : 0) - (matchA ? 1 : 0);
});

10-06 07:58