首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在两个列表之间循环比较元素- Dart

尝试在两个列表之间循环比较元素- Dart
EN

Stack Overflow用户
提问于 2022-06-15 19:06:58
回答 1查看 156关注 0票数 1

我目前有两个列表,第一个列表获得了只包含lat/lon地理坐标的有序元素,这些是传递路线上的路径点,必须按照这个顺序保持。第二个得到嵌套列表,其中包含位置的字符串地址作为元素,对应的lat/lon作为元素1。

list1 = [-22.7481495,-43.440236,-22.7532378,-43.4541717,-22.9976583,-43.3581268,-22.8795337,-43.3373482]

list2 =[样本地址A,-22.9976583,-43.3581268,样本地址B,-22.7481495,-43.440236,样本地址C,-22.7532378,-43.4541717,样本地址D,-22.8795337,-43.3373482]

我需要根据我在第一份订单中的订单来订购第二份清单。仅举一个简单的例子,list2应该等于示例地址B,-22.7481495,-43.440236

EN

回答 1

Stack Overflow用户

发布于 2022-06-15 20:14:28

这应该是你要找的:

代码语言:javascript
复制
void main() {
  var list1 = [
    [-22.7481495, -43.440236],
    [-22.7532378, -43.4541717],
    [-22.9976583, -43.3581268],
    [-22.8795337, -43.3373482],
  ];

  var list2 = [
    ["SAMPLE ADDRESS A", -22.9976583, -43.3581268],
    ["SAMPLE ADDRESS B", -22.7481495, -43.440236],
    ["SAMPLE ADDRESS C", -22.7532378, -43.4541717],
    ["SAMPLE ADDRESS D", -22.8795337, -43.3373482],
  ];
  
  list2.sort((l1, l2) {
    return list1.indexWhere((el) { return el[0] == l1[1] && el[1] == l1[2];}) -
      list1.indexWhere((el) { return el[0] == l2[1] && el[1] == l2[2]; });
  }
  
  );

  print(list2);
}

我们使用排序方法(https://api.flutter.dev/flutter/dart-core/List/sort.html)对列表进行排序,传递一个比较每个元素位于list1中的索引的Comparator

另请参阅:

  1. https://api.flutter.dev/flutter/dart-core/Comparator.html
  2. https://api.flutter.dev/flutter/dart-core/List/indexWhere.html
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72636659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档