如何使用 Dart / Flutter 中的列表从列表中删除重复元素?

Posted

技术标签:

【中文标题】如何使用 Dart / Flutter 中的列表从列表中删除重复元素?【英文标题】:How to remove duplicate elements from a list using lists in Dart / Flutter? 【发布时间】:2020-12-14 01:07:52 【问题描述】:

如何从 Dart / Flutter 中的列表中删除重复项?

.toSet().toList() 不起作用。

例如:

List one = [
     [
        [6, 51],
        [2, 76]
     ],
     [
        [6, 51],
        [2, 76]
     ],
     [
        [5, 66],
        [4, 96]
     ]
]

应该是:

List two = [
     [
        [6, 51],
        [2, 76]
     ],
     [
        [5, 66],
        [4, 96]
     ]
]

【问题讨论】:

【参考方案1】:

我希望这有效。同时导入'dart:convert';

List two = 
  one.map((f) => f.toString()).toSet().toList()
  .map((f) => json.decode(f) as List<dynamic>).toList();

【讨论】:

【参考方案2】:

效率不是很高,但这可以工作

void main() 
  List<List<List<int>>> one = [
    [
      [6, 51],
      [2, 76]
    ],
    [
      [6, 51],
      [2, 76]
    ],
    [
      [5, 66],
      [4, 96]
    ]
  ];

  print(one);

  print(one.removeDuplicates());


extension ListExtension<T> on List<T> 
  bool _containsElement(T e) 
    for (T element in this) 
      if (element.toString().compareTo(e.toString()) == 0) return true;
    
    return false;
  

  List<T> removeDuplicates() 
    List<T> tempList = [];

    this.forEach((element) 
      if (!tempList._containsElement(element)) tempList.add(element);
    );
    
    return tempList;
  


【讨论】:

以上是关于如何使用 Dart / Flutter 中的列表从列表中删除重复元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter dart 的列表中的循环内附加数据?

(Flutter/Dart) 如何修复使用 [ ] 显示列表中的数字

在 Flutter 中使用 Dart,如何添加到地图列表中的地图列表中?

Dart // Flutter:如何根据条目的内容从列表中删除项目

识别二维列表是不是包含 Dart/Flutter 中的列表

使用 Dart 和 Flutter,我如何将动态小部件中的数据保存到另一个列表中的地图列表中