gpt4 book ai didi

dart - Dart移除 list 中的 object

转载 作者:行者123 更新时间:2023-12-03 04:21:28 25 4
gpt4 key购买 nike

我想从列表中删除一个对象,但是看不到。
我想删除具有相同类型的对象,并按类型保持最大距离。

这是我的代码:

int userDistance = 851;
final String chargesJson = '''[
{
"type" : 1,
"distance": 800,
"setting": 1122,
"bond" : 44
},
{
"type" : 1,
"distance": 850,
"setting": 1076,
"bond" : 50
},
{
"type" : 2,
"distance": 800,
"setting": 1336,
"bond" : 37
},
{
"type" : 2,
"distance": 900,
"setting": 1299,
"bond" : 39
}
]
''';
final List charges = json.decode(chargesJson);

Map searchCharges(int userDistance) {
Map result = {};

// List all charges that are less than userDistance
// Remove all charges that are higher
List positiveDistanceDiff = charges.where((c) => userDistance - c['distance'] >= 0 ).toList();
print('positiveDistanceDiff : $positiveDistanceDiff');

我有这个 :
positiveDistanceDiff : [{type: 1, distance: 800, setting: 1122, bond: 44}, {type: 1, distance: 850, setting: 1076, bond: 50}, {type: 2, distance: 800, setting: 1336, bond: 37}]

但是我只希望每种类型的对象具有最长的距离。
所以在我的例子中,我想列出一个没有
{type: 1, distance: 800, setting: 1122, bond: 44}

最佳答案

像这样吗我不确定我是否完全理解您的问题,因为按照您自己的逻辑,您还应该删除距离为800的“type:2”条目?

另外,我编写了代码,因此它创建了一个新列表,其中的值已被过滤。

import 'dart:convert';

const String chargesJson = '''[
{
"type" : 1,
"distance": 800,
"setting": 1122,
"bond" : 44
},
{
"type" : 1,
"distance": 850,
"setting": 1076,
"bond" : 50
},
{
"type" : 2,
"distance": 800,
"setting": 1336,
"bond" : 37
},
{
"type" : 2,
"distance": 900,
"setting": 1299,
"bond" : 39
}
]
''';

void main() {
final charges = json.decode(chargesJson) as List<dynamic>;

final filteredList = charges
.cast<Map<String, dynamic>>()
.fold(<int, Map<String, dynamic>>{},
(Map<int, Map<String, dynamic>> map, element) {
final type = element['type'] as int;

if (!map.containsKey(type) ||
(map[type]['distance'] as int) < (element['distance'] as int)) {
map[type] = element;
}

return map;
})
.values
.toList();

filteredList.forEach(print);
// {type: 1, distance: 850, setting: 1076, bond: 50}
// {type: 2, distance: 900, setting: 1299, bond: 39}
}

关于dart - Dart移除 list 中的 object ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62376992/

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