飞镖排序方法不起作用
flutter dart sorting method does not work
var dataJson = response.body;
dataJson = dataJson.replaceAll('[', '');
dataJson = dataJson.replaceAll(']', '');
dataJson = dataJson.replaceAll('"', '');
var matchData = dataJson.split(',').toList();
//matchData.sort((a, b) => a.compareTo(b)); I tested this too
matchData.sort();
dataJson = [KR_1, KR_3, KR_4, KR_2, KR_7, KR_6, KR_5]
我想像这样对列表进行排序:
[KR_1, KR_2, KR_3, KR_4, KR_5, KR_6, KR_7]
谢谢
试试这个;
final dataJson = ["KR_1", "KR_3", "KR_4", "KR_2", "KR_7", "KR_6", "KR_5"];
final data = dataJson.toList()..sort((a,b)=> a.compareTo(b));
log(data.toString()); // or use print
// 结果
[KR_1, KR_2, KR_3, KR_4, KR_5, KR_6, KR_7]
你的代码的问题是给定一个 String
'["KR_1", "KR_3", "KR_4", "KR_2", "KR_7", "KR_6", "KR_5"]'
(根据你的代码,我认为这是你真正拥有的),在删除括号和引号之后,当您执行 dataJson.split(',')
,结果 List
的元素仍将包含空格。某些元素开头的空格会导致您获得意外的排序顺序。
(顺便说一句,String.split
已经 returns 一个 List<String>
,因此再次调用 .toList()
是不必要和浪费的。)
您可以改用 dataJson.split(', ')
或对每个元素显式调用 String.trim
来删除空格。但实际上你不应该自己解析 JSON:
import 'dart:convert';
void main() {
var dataJson = '["KR_1", "KR_3", "KR_4", "KR_2", "KR_7", "KR_6", "KR_5"]';
var matchData = json.decode(dataJson);
matchData..sort();
print(matchData); // Prints: [KR_1, KR_2, KR_3, KR_4, KR_5, KR_6, KR_7]
}
请注意,上面的字符串 按字典顺序 排序(即按字符代码顺序),因此 "KR_10"
将排在 "KR_2"
之前。如果您不希望这样,请参阅:
var dataJson = response.body;
dataJson = dataJson.replaceAll('[', '');
dataJson = dataJson.replaceAll(']', '');
dataJson = dataJson.replaceAll('"', '');
var matchData = dataJson.split(',').toList();
//matchData.sort((a, b) => a.compareTo(b)); I tested this too
matchData.sort();
dataJson = [KR_1, KR_3, KR_4, KR_2, KR_7, KR_6, KR_5]
我想像这样对列表进行排序:
[KR_1, KR_2, KR_3, KR_4, KR_5, KR_6, KR_7]
谢谢
试试这个;
final dataJson = ["KR_1", "KR_3", "KR_4", "KR_2", "KR_7", "KR_6", "KR_5"];
final data = dataJson.toList()..sort((a,b)=> a.compareTo(b));
log(data.toString()); // or use print
// 结果
[KR_1, KR_2, KR_3, KR_4, KR_5, KR_6, KR_7]
你的代码的问题是给定一个 String
'["KR_1", "KR_3", "KR_4", "KR_2", "KR_7", "KR_6", "KR_5"]'
(根据你的代码,我认为这是你真正拥有的),在删除括号和引号之后,当您执行 dataJson.split(',')
,结果 List
的元素仍将包含空格。某些元素开头的空格会导致您获得意外的排序顺序。
(顺便说一句,String.split
已经 returns 一个 List<String>
,因此再次调用 .toList()
是不必要和浪费的。)
您可以改用 dataJson.split(', ')
或对每个元素显式调用 String.trim
来删除空格。但实际上你不应该自己解析 JSON:
import 'dart:convert';
void main() {
var dataJson = '["KR_1", "KR_3", "KR_4", "KR_2", "KR_7", "KR_6", "KR_5"]';
var matchData = json.decode(dataJson);
matchData..sort();
print(matchData); // Prints: [KR_1, KR_2, KR_3, KR_4, KR_5, KR_6, KR_7]
}
请注意,上面的字符串 按字典顺序 排序(即按字符代码顺序),因此 "KR_10"
将排在 "KR_2"
之前。如果您不希望这样,请参阅: