gpt4 book ai didi

sorting - Dart自定义排序列表

转载 作者:行者123 更新时间:2023-12-03 04:53:14 27 4
gpt4 key购买 nike

我想构建一个建议生成器,在其中显示有关更改TextField中的文本的搜索建议。我想根据contains方法进行搜索,但是我想根据startsWith对特定列表进行排序,如果仅使用startsWith,它将忽略所有其他contains,如何同时应用这两种方法?
我有一个 list ,

List<String> list = ["apple", "orange", "aaaaorange", "bbbborange","cccccorange"]

现在,如果我只在搜索中放入 ora,它会按照以下顺序返回我,
aaaaorange
bbbborange
cccccorange
orange

我想要的是。
orange
aaaaorange
bbbborange
cccccorange

码:
            return list
.where((item) {
return item.toLowerCase().contains(query.toLowerCase());
}).toList(growable: false)
..sort((a, b) {
return a.toLowerCase().compareTo(b.toLowerCase());
});

最佳答案

分别考虑两个查询,然后组合结果可能是最简单的:

  var list = <String>[
'apple',
'orange',
'aaaaorange',
'bbbborange',
'cccccorange',
];
var pattern = 'ora';

var starts = list.where((s) => s.startsWith(pattern)).toList();
var contains = list
.where((s) => s.contains(pattern) && !s.startsWith(pattern))
.toList()
..sort((a, b) => a.toLowerCase().compareTo(b.toLowerCase()));

var combined = [...starts, ...contains];
print(combined);

关于sorting - Dart自定义排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61048231/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com