建议: 根据数组中的多个属性进行排序
作者: breml创建于 2026年2月20日更新于 2026年2月26日
我有一个包含多个属性的结构体数组(或切片),如下所示: type Data []struct{ key1 string key2 string counter int } 现在我想在 expr-lang 中根据多个属性对其进行排序,其中一些属性升序,一些属性降序。在 SQL 中,我可以这样做: ... ORDER BY counter DESC, key1 ASC, key2 ASC。 我尝试使用嵌套的 `sortBy`,如下所示: `sortBy(sortBy(sortBy(Data, .key2, "asc"), .key1, "asc"), .counter, "desc")`,但这不起作用(我不确定原因)。因此,我最终实现了自己的自定义函数,我称之为 `multiSortBy`,可以这样调用: `multiSortBy(Data, ".counter", "desc", ".key1", "asc", ".key2", "asc")`。 这带来了限制,即在用户提供的函数中,无法(据我所知)使用与内置函数中相同的谓词,这限制了我实现 `multiSortBy` 的可能性。 因此,我建议在 expr-lang 中引入一个新函数,该函数允许根据多个标准进行排序。 (如果我忽略了使用现有功能对多列进行排序的相关内容,我很乐意了解这些替代方案。)
内容来源: expr-lang/expr