项目过滤相关的数据结构问题

Data structure problem related to items filtering

我有这个数据:

共有三列r_code、wtg_code和rr。每一行都可以视为对象属性的集合。我们必须从现有行中 select n 行。考虑到行按 r_code 的降序排列,约束是

  1. Select行按r_code降序排列,多行可以有相同的r_code.
  2. 如果多行相同r_code,则select在wtg_code的基础上递减。
  3. 如果多行具有相同的 wtg_code 那么 select 根据最低的 rr.

如果能在Javascript中给出解决方案就更好了,否则我欢迎任何语言。

在JavaScript中,数据可以这样表示:

let data = [
    { r_code: 5, wtg_code: 8, rr: 3.4 },
    { r_code: 5, wtg_code: 8, rr: 3.4 },
    { r_code: 5, wtg_code: 7, rr: 4.5 },
    { r_code: 4, wtg_code: 6, rr: 1.2 },
    { r_code: 4, wtg_code: 6, rr: 2.4 },
    { r_code: 4, wtg_code: 6, rr: 4.5 },
    { r_code: 2, wtg_code: 6, rr: 1.6 },
    { r_code: 2, wtg_code: 5, rr: 7.4 },
    { r_code: 1, wtg_code: 4, rr: 3.1 },
    { r_code: 1, wtg_code: 4, rr: 2.9 },
    { r_code: 1, wtg_code: 3, rr: 3.3 },
];

Considering the row are sorted in decreasing order of r_code

这仍然可以进行多种排列。选择规则实际上意味着您应该更精确地对数据进行排序:按降序 r_code、降序 wtg_code 和升序 wtg_code.

为此,您可以使用 sort 方法。

data.sort((a, b) => b.r_code - a.r_code || b.wtg_code - a.wtg_code || a.rr - b.rr);

最后,如果你对前10个(n=10)感兴趣,那么切片:

let n = 10;
console.log(data.slice(0, n));