2

我有两列值。如果第一列任何值变为 0,则按另一列值排序。

可能的输入

Django      Rect
10          20
20          11
1           100
100         1
0           1
0           100
0           9
0           0
0           0

预计出局

Django      Rect
100         1
20          11
10          20
1           100
0           100
0           9
0           1
0           0
0           0

我希望降序排序。我可以对一列中的任何一列进行排序,但我需要根据给定条件一次对两列进行排序。到目前为止我已经尝试过

all_data.sort(function(a,b){
      return a.Django- b.Django;
    }
);
4

2 回答 2

2

您的问题如下所示:"The ordinal property you want to sort by"

更准确地说,什么时候应该排序DjangoRect.

const all_data = [{Django:10,Rect:20},{Django:20,Rect:11},{Django:1,Rect:100},{Django:100,Rect:1},{Django:0,Rect:1},{Django:0,Rect:100},{Django:0,Rect:9},{Django:0,Rect:0},{Django:0,Rect:0}];

all_data.sort((a, b) => b.Django - a.Django || b.Rect - a.Rect);
console.log(all_data);

解释:

首先,按 desc 排序Django其次,如果Django相同,那么将按 desc 排序Rect

于 2021-04-08T07:03:18.023 回答
-1

您说您只想按0Rect时排序。Django但是,在我看来,最好Rect在所有情况下按a.Django === b.Django.

您可以在比较函数中检查是否相等。

all_data.sort(function(a,b) {
        if (a.Django === b.Django) {
            return a.Rect - b.Rect;
        }
        return a.Django- b.Django;
    }
);
于 2021-04-08T06:57:51.427 回答